[Home] [Help]
PACKAGE BODY: APPS.CZ_PB_MGR
Source
1 PACKAGE BODY cz_pb_mgr AS
2 /* $Header: czpbmgrb.pls 120.256.12020000.3 2012/11/28 15:59:52 smanna ship $ */
3
4 TYPE varchar_type_32000_tbl IS TABLE OF VARCHAR2(32000) INDEX BY VARCHAR2(15);
5
6 --Bug #5186307 - deferred.
7 --TYPE t_item_origsysref_tbl IS TABLE OF cz_item_masters.orig_sys_ref%TYPE INDEX BY VARCHAR2(4000);
8 --TYPE t_itemtype_origsysref_tbl IS TABLE OF cz_item_types.orig_sys_ref%TYPE INDEX BY VARCHAR2(4000);
9
10 v_application_id_tbl cz_pb_mgr.t_ref;
11 v_language_id_tbl cz_pb_mgr.t_lang_code;
12 v_usage_id_tbl cz_pb_mgr.t_ref;
13 v_remote_names_not_exported varchar_type_32000_tbl;
14 v_remote_names_exported varchar_type_32000_tbl;
15
16 g_ui_style_dhtml CONSTANT VARCHAR2(1) := '0';
17 g_ui_style_applet CONSTANT VARCHAR2(1) := '3';
18 g_ui_style_jrad CONSTANT VARCHAR2(1) := '7';
19 g_ui_style_custom CONSTANT VARCHAR2(1) := '8';
20 v_default_eff_usg_mask CONSTANT VARCHAR2(16) := '0000000000000000';
21
22 PS_NODE_TYPE_REFERENCE CONSTANT PLS_INTEGER := 263;
23 PS_NODE_TYPE_BOM_MODEL CONSTANT PLS_INTEGER := 436;
24 PS_NODE_TYPE_BOM_OPTIONCLASS CONSTANT PLS_INTEGER := 437;
25 PS_NODE_TYPE_BOM_STANDARD CONSTANT PLS_INTEGER := 438;
26 SRC_APPL_ID_BOM CONSTANT PLS_INTEGER := 702;
27
28 ENGINE_TYPE_FCE CONSTANT VARCHAR2(1) := 'F';
29
30 ENTITY_TYPE_UCT CONSTANT VARCHAR2(3) := 'UCT';
31 ENTITY_TYPE_UMT CONSTANT VARCHAR2(3) := 'UMT';
32 ENTITY_TYPE_SIGNATURE CONSTANT VARCHAR2(3) := 'SIG';
33 ENTITY_TYPE_RULE CONSTANT VARCHAR2(3) := 'RUL';
34 ENTITY_TYPE_PROPERTY CONSTANT VARCHAR2(3) := 'PRP';
35
36 -- special fields in id resolution
37 -- cz_des_chart_cells.primary_opt_id, secondary_opt_id, secondary_feature_id
38 -- cz_des_chart_feature.feature_id, cz_rules.rule_folder_id,
39 -- cz_ps_nodes.reference_id, cz_ui_nodes.ui_node_ref_id
40 FLD_PSN_REFERENCE_ID CONSTANT VARCHAR2(9) := 'PSNREFID';
41 FLD_RULE_COMPONENT_ID CONSTANT VARCHAR2(9) := 'RULCOMID';
42 FLD_UI_NODE_REF_ID CONSTANT VARCHAR2(9) := 'UINREFID';
43 FLD_IGNORE_NOW CONSTANT VARCHAR2(9) := 'IGNOREID';
44
45 NONSEED_UCT_MIN_ID CONSTANT INTEGER := 2000;
46 NONSEED_UMT_MIN_ID CONSTANT INTEGER := 1000;
47 NONSEED_SIGN_MIN_ID CONSTANT INTEGER := 10000;
48 NONSEED_RULE_MIN_ID CONSTANT INTEGER := 1000;
49 NONSEED_PROP_MIN_ID CONSTANT INTEGER := 1000;
50
51 RULE_TYPE_DISPLAY_CONDITION CONSTANT INTEGER := 33;
52 RULE_TYPE_ENABLED_CONDITION CONSTANT INTEGER := 34;
53 RULE_TYPE_CONFIG_EXTENSION CONSTANT INTEGER := 300;
54 RULE_TYPE_POPULATOR CONSTANT INTEGER := 502;
55 RULE_TYPE_CAPTION CONSTANT INTEGER := 700;
56
57 g_engine_type cz_devl_projects.config_engine_type%TYPE;
58
59 --Bug #5186307 - deferred.
60 --v_item_synched_osr t_item_origsysref_tbl;
61 --v_itemtype_synched_osr t_itemtype_origsysref_tbl;
62
63 v_prop_vals_def_num_value_ref cz_pb_mgr.t_ref;
64
65 --Bug 1170415..Introducing two global variables for template and action rollback
66 g_skip_templ_rollback BOOLEAN := FALSE;
67 g_skip_templaction_rollback BOOLEAN := FALSE;
68
69
70 -- These two procedures are created for debugging purpose. They will be called only
71 -- when Publication Logging is turned ON.
72
73 PROCEDURE mm_dump_array (array_to_dump IN cz_pb_mgr.t_ref,
74 array_name IN VARCHAR2)
75 IS
76 x NUMBER := 0;
77 BEGIN
78 IF (array_to_dump.COUNT > 0) THEN
79 FOR j IN array_to_dump.first .. array_to_dump.last LOOP
80 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
81 (Sysdate, 'MM_DUMP_ARRAY', 'Array ' || array_name || ', index ' || j || ': ' || array_to_dump(j));
82 END LOOP;
83 END IF;
84 END mm_dump_array;
85
86 PROCEDURE mm_dump_osr_array (array_to_dump IN cz_pb_mgr.orig_sys_ref_type,
87 array_name IN VARCHAR2)
88 IS
89 x NUMBER := 0;
90 BEGIN
91 IF (array_to_dump.COUNT > 0) THEN
92 FOR j IN array_to_dump.first .. array_to_dump.last LOOP
93 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
94 (Sysdate, 'MM_DUMP_OSR_ARRAY', 'Array ' || array_name || ', index ' || j || ': ' || array_to_dump(j));
95 END LOOP;
96 END IF;
97 END mm_dump_osr_array;
98
99 ------------------------------------------------------------------------------------------------
100
101
102 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
103 -------procedure that resolves remote reference nodes - forward declaration
104 PROCEDURE resolve_ref_ids_not_found(
105 p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
106 ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
107 ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
108 ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
109 ,p_column_name IN VARCHAR2
110 ,x_status IN OUT NOCOPY VARCHAR2
111 );
112
113 PROCEDURE rollback_data(p_db_link IN VARCHAR2);
114 PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE);
115 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
116 -----------delete session variables
117 PROCEDURE delete_session_parameters
118 AS
119 BEGIN
120 cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.delete;
121 cz_pb_mgr.g_ui_actns_ui_act_id_old_ref.delete;
122 cz_pb_mgr.v_models_to_be_exported.DELETE;
123 cz_pb_mgr.v_models_not_to_be_exported.DELETE;
124 cz_pb_mgr.v_models_to_be_exported_new.DELETE;
125 v_remote_names_not_exported.DELETE;
126 v_remote_names_exported.DELETE;
127 cz_pb_mgr.v_templates_tobe_exported.DELETE;
128 cz_pb_mgr.v_templates_not_exported.DELETE;
129 cz_pb_mgr.v_global_templs_ref.DELETE;
130 cz_pb_mgr.v_server_id := 0;
131 cz_pb_mgr.v_ui_def_id := 0;
132 cz_pb_mgr.v_export_id := 0;
133 cz_pb_mgr.v_publication_id := 0;
134 cz_pb_mgr.v_root_model_id := 0;
135 cz_pb_mgr.target_root_model_id := 0;
136 cz_pb_mgr.v_root_ui_def_id := 0;
137 cz_pb_mgr.v_status_code := NULL;
138 cz_pb_mgr.loguser := NULL;
139 cz_pb_mgr.v_err_message := NULL;
140 cz_pb_mgr.sequence_no := 0;
141 cz_pb_mgr.v_oraclesequenceincr := 0;
142 cz_pb_mgr.v_db_link := NULL;
143 cz_pb_mgr.v_insert_string := NULL;
144 --Bug3437555: Initalizing the value to 10 in order to protect the seeded
145 ---devl_project_id = 0 for unknown reason.
146 cz_pb_mgr.v_new_devl_id := 10;
147 cz_pb_mgr.v_msg_tbl.DELETE;
148 cz_pb_mgr.v_pb_run_id := 0;
149 cz_pb_mgr.v_new_object_id := 0;
150 cz_pb_mgr.v_server_local_name := NULL;
151 cz_pb_mgr.copy_rules := 'YES';
152 cz_pb_mgr.copy_uis := 'YES';
153 cz_pb_mgr.copy_root_only := 'YES';
154 v_application_id_tbl.DELETE;
155 v_usage_id_tbl.DELETE;
156 v_language_id_tbl.DELETE;
157 cz_pb_mgr.g_item_type_id := 0;
158 cz_pb_mgr.g_item_id := 0;
159 g_object_type := ' ';
160 g_cz_ui_pages_ui_def_ref.DELETE;
161 g_cz_ui_pages_jrad_doc_ref.DELETE;
162 g_cz_ui_pages_capt_id_ref.DELETE;
163 cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
164 cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
165 g_cz_ui_pages_ui_def_tbl.DELETE;
166 g_cz_ui_pages_jrad_doc_tbl.DELETE;
167 g_cz_ui_pages_capt_id_tbl.DELETE;
168 g_page_sets_ui_old_ref.DELETE;
169 g_page_sets_ui_ref.DELETE;
170 g_page_sets_pg_tbl.DELETE;
171 cz_pb_mgr.v_ui_images_ui_ref.DELETE;
172 cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
173 cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
174 cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
175 g_page_refs_ui_def_old_ref.DELETE;
176 g_page_refs_ui_def_new_ref.DELETE;
177 g_page_refs_cond_id_ref.DELETE;
178 g_page_refs_capt_id_ref.DELETE;
179 g_page_refs_tgt_ui_ref.DELETE;
180 g_page_refs_tgt_expl_tbl.DELETE;
181 g_ui_refs_old_ui_def_ref.DELETE;
182 g_ui_refs_new_ui_def_ref.DELETE;
183 g_ui_refs_ref_ui_def_ref.DELETE;
184 g_ui_refs_expl_id_ref.DELETE;
185 g_ui_ps_maps_old_ui_def_ref.DELETE;
186 g_ui_ps_maps_new_ui_def_ref.DELETE;
187 g_ui_ps_maps_ctrl_tmp_ref.DELETE;
188 cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
189 cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
190 g_ui_templates_old_temp_id_ref.DELETE;
191 g_ui_templates_new_temp_id_ref.DELETE;
192 g_ui_templates_idx_temp_ref.DELETE;
193 g_ui_templates_ui_def_old_ref.DELETE;
194 g_ui_templates_ui_def_new_ref.DELETE;
195 g_ui_templates_jrad_new_ref.DELETE;
196 g_ui_templates_jrad_old_ref.DELETE;
197 g_tmpl_jrad_old_tbl.DELETE;
198 g_tmpl_jrad_new_tbl.DELETE;
199 g_cnt_typ_tmpls_old_uidef_ref.DELETE;
200 g_cnt_typ_tmpls_new_uidef_ref.DELETE;
201 g_cnt_typ_tmpls_tmpid_ref.DELETE;
202 g_cnt_typ_tmpls_tgtuidef_ref.DELETE;
203 g_cnt_typ_tmpls_cont_ref.DELETE;
204 g_ui_actns_ui_act_id_ref.DELETE;
205 g_ui_actns_ui_uidef_ref.DELETE;
206 g_ui_actns_ui_tgtui_ref.DELETE;
207 g_pages_ui_def_old_ref.DELETE;
208 cz_pb_mgr.v_sig_new_ref.DELETE;
209 cz_pb_mgr.v_sig_old_ref.DELETE;
210 cz_pb_mgr.v_sig_idx_ref.DELETE;
211 cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
212 cz_pb_mgr.v_arg_sig_tbl.DELETE;
213 cz_pb_mgr.v_data_sig_tbl.DELETE;
214 cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
215 cz_pb_mgr.v_cz_ui_nodes_idx_ref.DELETE;
216 cz_pb_mgr.l_cnt_typ_tmpls_cont_ref.DELETE;
217 cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.DELETE;
218 cz_pb_mgr.l_ui_images_ui_ref.DELETE;
219 cz_pb_mgr.l_ui_images_enty_tbl.DELETE;
220 cz_pb_mgr.l_ui_images_usg_tbl.DELETE;
221 cz_pb_mgr.h_devl_prj_by_intl_text.DELETE;
222 cz_pb_mgr.v_propval_node_id := NULL;
223 cz_pb_mgr.v_propval_prop_id := NULL;
224 cz_pb_mgr.v_propval_data_value := NULL;
225
226 cz_pb_mgr.g_ps_reverse_connector_tbl.DELETE;
227 cz_pb_mgr.g_ui_actions_id_idx_ref.DELETE;
228 cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
229 cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
230 cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
231 cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
232 cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
233 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
234 cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
235 cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
236 cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
237 cz_pb_mgr.g_fcefile_old_id_tbl.DELETE;
238 cz_pb_mgr.g_fcefile_new_id_tbl.DELETE;
239 cz_pb_mgr.g_fcefile_compid_tbl.DELETE;
240 g_migration_group_id := NULL;
241
242 --Bug #5186307 - deferred.
243 --v_item_synched_osr.DELETE;
244 --v_itemtype_synched_osr.DELETE;
245
246 --The sequence incrementor cannot be 0, therefore we need to re-read it.
247
248 get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
249 EXCEPTION
250 WHEN OTHERS
251 THEN
252 NULL;
253 END delete_session_parameters;
254
255 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
256 -----procedure that clears pl/sql tables for a table
257 -----@p_table_name : name of the table
258 -----@p_table_type : type of array
259 -----@x_status : publication status parameter
260 PROCEDURE clear_tables(p_table_name IN VARCHAR2, p_table_type IN VARCHAR2, x_status IN OUT NOCOPY VARCHAR2)
261 AS
262 BEGIN
263 IF (p_table_name = 'cz_ps_nodes')
264 THEN
265 IF (p_table_type = 'tbl')
266 THEN
267 cz_pb_mgr.v_cz_ps_nodes_new_tbl.DELETE;
268 cz_pb_mgr.v_cz_ps_nodes_old_tbl.DELETE;
269 cz_pb_mgr.v_cz_ps_nodes_idx_tbl.DELETE;
270 cz_pb_mgr.v_ps_parent_id_tbl.DELETE;
271 cz_pb_mgr.v_ps_refid_old_tbl.DELETE;
272 cz_pb_mgr.v_devl_project_tbl.DELETE;
273 cz_pb_mgr.v_ps_eff_set_id_tbl.DELETE;
274 cz_pb_mgr.v_ps_intl_old_tbl.DELETE;
275 cz_pb_mgr.v_ps_viol_old_tbl.DELETE;
276 cz_pb_mgr.v_ps_orig_sys_tbl.DELETE;
277 cz_pb_mgr.v_ps_comp_seq_path_tbl.DELETE;
278 cz_pb_mgr.v_ps_comp_seq_id_tbl.DELETE;
279 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
280 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
281 cz_pb_mgr.v_ps_capt_rule_tbl.DELETE;
282 cz_pb_mgr.v_cz_ps_nodes_comp_tbl.DELETE;
283 cz_pb_mgr.v_ps_item_id_tbl.DELETE;
284 cz_pb_mgr.v_ps_type_old_tbl.DELETE;
285 cz_pb_mgr.v_ps_src_appl_id_old_tbl.DELETE;
286 cz_pb_mgr.v_psnode_propval_tbl.DELETE; -- Bug11685105
287 cz_pb_mgr.g_ps_uits_add_tbl.DELETE;
288 cz_pb_mgr.g_usg_name_processed.DELETE;
289 ELSIF(p_table_type = 'ref')
290 THEN
291 cz_pb_mgr.v_cz_ps_nodes_new_ref.DELETE;
292 cz_pb_mgr.v_cz_ps_nodes_old_ref.DELETE;
293 cz_pb_mgr.v_ps_parent_id_ref.DELETE;
294 cz_pb_mgr.v_ps_ref_id_ref.DELETE;
295 cz_pb_mgr.v_ps_eff_set_id_ref.DELETE;
296 cz_pb_mgr.v_ps_intl_old_ref.DELETE;
297 cz_pb_mgr.v_ps_viol_old_ref.DELETE;
298 cz_pb_mgr.v_ps_orig_sys_ref.DELETE;
299 cz_pb_mgr.v_ps_comp_seq_path_ref.DELETE;
300 cz_pb_mgr.v_ps_comp_seq_id_ref.DELETE;
301 cz_pb_mgr.v_ps_capt_rule_ref.DELETE;
302 cz_pb_mgr.v_cz_ps_nodes_comp_ref.DELETE;
303 cz_pb_mgr.v_ps_item_id_ref.DELETE;
304 cz_pb_mgr.v_ps_type_old_ref.DELETE;
305 cz_pb_mgr.v_ps_src_appl_id_old_ref.DELETE;
306 END IF;
307 ELSIF(p_table_name = 'cz_model_ref_expls')
308 THEN
309 IF (p_table_type = 'tbl')
310 THEN
311 cz_pb_mgr.v_component_id_old_tbl.DELETE;
312 cz_pb_mgr.v_parent_expl_id_tbl.DELETE;
313 cz_pb_mgr.v_child_expl_id_tbl.DELETE;
314 cz_pb_mgr.v_referring_node_id_tbl.DELETE;
315 ELSIF(p_table_type = 'ref')
316 THEN
317 cz_pb_mgr.v_cz_model_ref_expls_idx_ref.DELETE;
318 cz_pb_mgr.v_cz_model_ref_expls_old_ref.DELETE;
319 cz_pb_mgr.v_cz_model_ref_expls_new_ref.DELETE;
320 cz_pb_mgr.v_component_id_old_ref.DELETE;
321 cz_pb_mgr.v_parent_expl_id_ref.DELETE;
322 cz_pb_mgr.v_child_expl_id_ref.DELETE;
323 cz_pb_mgr.v_referring_node_id_ref.DELETE;
324 cz_pb_mgr.v_ref_model_id_ref.DELETE;
325 END IF;
326 ELSIF(p_table_name = 'cz_func_comp_specs')
327 THEN
328 IF (p_table_type = 'tbl')
329 THEN
330 cz_pb_mgr.v_cz_func_comp_old_tbl.DELETE;
331 cz_pb_mgr.v_cz_func_comp_new_tbl.DELETE;
332 ELSIF(p_table_type = 'ref')
333 THEN
334 cz_pb_mgr.v_cz_func_comp_new_ref.DELETE;
335 cz_pb_mgr.v_cz_func_comp_old_ref.DELETE;
336 cz_pb_mgr.v_cz_func_comp_idx_ref.DELETE;
337 cz_pb_mgr.v_cz_func_devl_old_ref.DELETE;
338 cz_pb_mgr.v_cz_func_cid_old_ref.DELETE;
339 cz_pb_mgr.v_cz_func_expl_old_ref.DELETE;
340 cz_pb_mgr.v_cz_func_fld_old_ref.DELETE;
341 cz_pb_mgr.v_cz_func_obj_ref.DELETE;
342 END IF;
343 ELSIF(p_table_name = 'cz_ui_defs')
344 THEN
345 IF (p_table_type = 'tbl')
346 THEN
347 cz_pb_mgr.v_ui_devl_id_tbl.DELETE;
348 cz_pb_mgr.v_ui_comp_id_tbl.DELETE;
349 ELSIF(p_table_type = 'ref')
350 THEN
351 cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
352 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
353 cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
354 cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
355 cz_pb_mgr.v_ui_devl_id_ref.DELETE;
356 cz_pb_mgr.v_ui_comp_id_ref.DELETE;
357 cz_pb_mgr.v_ui_defs_mcpt_rule_ref.DELETE;
358 cz_pb_mgr.v_ui_defs_pcpt_rule_ref.DELETE;
359 cz_pb_mgr.v_master_template_id_ref.DELETE;
360 END IF;
361 ELSIF(p_table_name = 'cz_ui_nodes')
362 THEN
363 IF (p_table_type = 'ref')
364 THEN
365 cz_pb_mgr.v_cz_ui_nodes_new_ref.DELETE;
366 cz_pb_mgr.v_cz_ui_nodes_old_ref.DELETE;
367 cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref.DELETE;
368 cz_pb_mgr.v_cz_ui_nodes_parent_id_ref.DELETE;
369 cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref.DELETE;
370 cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref.DELETE;
371 cz_pb_mgr.v_cz_ui_nodes_component_id_ref.DELETE;
372 cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref.DELETE;
373 cz_pb_mgr.v_cz_ui_nodes_expl_id_ref.DELETE;
374 cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref.DELETE;
375 cz_pb_mgr.v_cz_ui_nodes_capt_id_ref.DELETE;
376 cz_pb_mgr.v_cz_ui_nodes_tool_id_ref.DELETE;
377 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
378 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
379 END IF;
380 ELSIF(p_table_name = 'cz_ps_prop_vals')
381 THEN
382 IF (p_table_type = 'tbl')
383 THEN
384 cz_pb_mgr.v_prop_vals_node_tbl.DELETE;
385 cz_pb_mgr.v_prop_vals_prop_tbl.DELETE;
386 cz_pb_mgr.v_prop_vals_data_tbl.DELETE;
387 cz_pb_mgr.v_prop_vals_num_tbl.DELETE;
388 cz_pb_mgr.v_prop_vals_origsys_tbl.DELETE;
389 cz_pb_mgr.v_prop_vals_datanum_tbl.DELETE;
390 ELSIF(p_table_type = 'ref')
391 THEN
392 cz_pb_mgr.v_prop_vals_node_ref.DELETE;
393 cz_pb_mgr.v_prop_vals_prop_ref.DELETE;
394 cz_pb_mgr.v_prop_vals_data_ref.DELETE;
395 cz_pb_mgr.v_prop_vals_num_ref.DELETE;
396 cz_pb_mgr.v_prop_vals_origsys_ref.DELETE;
397 cz_pb_mgr.v_prop_vals_datanum_ref.DELETE;
398 cz_pb_mgr.v_prop_vals_data_typ_ref.DELETE;
399 cz_pb_mgr.v_prop_vals_data_num_ref.DELETE;
400 cz_pb_mgr.v_prop_vals_intl_text_ref.DELETE;
401 v_prop_vals_def_num_value_ref.DELETE;
402 END IF;
403 ELSIF(p_table_name = 'cz_item_masters')
404 THEN
405 IF (p_table_type = 'tbl')
406 THEN
407 cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
408 cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
409 cz_pb_mgr.v_item_masters_tbl.DELETE;
410 cz_pb_mgr.v_item_types_tbl.DELETE;
411 cz_pb_mgr.v_item_prop_id_tbl.DELETE;
412 cz_pb_mgr.v_item_prop_type_tbl.DELETE;
413 cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
414 cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
415 cz_pb_mgr.v_it_prop_value_tbl.DELETE;
416 ELSIF(p_table_type = 'ref')
417 THEN
418 cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
419 cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
420 cz_pb_mgr.v_item_masters_ref.DELETE;
421 cz_pb_mgr.v_item_types_ref.DELETE;
422 cz_pb_mgr.v_item_prop_id_ref.DELETE;
423 cz_pb_mgr.v_item_prop_type_ref.DELETE;
424 cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
425 cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
426 cz_pb_mgr.v_it_prop_value_ref.DELETE;
427 cz_pb_mgr.v_remote_prop_ref.DELETE;
428 cz_pb_mgr.v_property_record_ref.DELETE;
429 cz_pb_mgr.v_type_property_record_ref.DELETE;
430 cz_pb_mgr.v_type_record_ref.DELETE;
431 END IF;
432 ELSIF(p_table_name = 'cz_rule_folders')
433 THEN
434 IF (p_table_type = 'ref')
435 THEN
436 cz_pb_mgr.v_cz_folders_id_old_ref.DELETE;
437 cz_pb_mgr.v_cz_folders_id_new_ref.DELETE;
438 cz_pb_mgr.v_cz_folders_id_idx_ref.DELETE;
439 cz_pb_mgr.v_cz_folders_pf_id_ref.DELETE;
440 cz_pb_mgr.v_cz_folders_pj_id_ref.DELETE;
441 cz_pb_mgr.v_cz_folders_eff_ref.DELETE;
442 cz_pb_mgr.v_cz_folders_orig_ref.DELETE;
443 cz_pb_mgr.v_cz_folders_obj_ref.DELETE;
444 ELSIF(p_table_type = 'tbl')
445 THEN
446 cz_pb_mgr.v_cz_folders_id_old_tbl.DELETE;
447 cz_pb_mgr.v_cz_folders_id_new_tbl.DELETE;
448 END IF;
449 ELSIF(p_table_name = 'cz_expression_nodes')
450 THEN
451 IF (p_table_type = 'tbl')
452 THEN
453 cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.DELETE;
454 cz_pb_mgr.v_cz_enodes_enode_id_old_tbl.DELETE;
455 cz_pb_mgr.v_cz_enodes_expr_id_tbl.DELETE;
456 cz_pb_mgr.v_cz_enodes_psnode_id_tbl.DELETE;
457 cz_pb_mgr.v_cz_enodes_gcol_id_tbl.DELETE;
458 cz_pb_mgr.v_cz_enodes_pexpr_id_tbl.DELETE;
459 cz_pb_mgr.v_cz_enodes_mrefl_id_tbl.DELETE;
460 cz_pb_mgr.v_cz_enodes_rule_id_tbl.DELETE;
461 cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl.DELETE;
462 cz_pb_mgr.v_cz_enodes_par_sig_id_tbl.DELETE;
463 cz_pb_mgr.v_cz_enodes_prop_id_tbl.delete;
464 ELSIF(p_table_type = 'ref')
465 THEN
466 cz_pb_mgr.v_cz_enodes_enode_id_old_ref.DELETE;
467 cz_pb_mgr.v_cz_enodes_enode_id_idx_ref.DELETE;
468 cz_pb_mgr.v_cz_enodes_enode_id_new_ref.DELETE;
469 cz_pb_mgr.v_cz_enodes_psnode_id_ref.DELETE;
470 cz_pb_mgr.v_cz_enodes_gcol_id_ref.DELETE;
471 cz_pb_mgr.v_cz_enodes_pexpr_id_ref.DELETE;
472 cz_pb_mgr.v_cz_enodes_mrefl_id_ref.DELETE;
473 cz_pb_mgr.v_cz_enodes_rule_id_ref.DELETE;
474 cz_pb_mgr.v_cz_enodes_arg_sig_id_ref.DELETE;
475 cz_pb_mgr.v_cz_enodes_par_sig_id_ref.DELETE;
476 cz_pb_mgr.v_cz_expr_sig_ref.DELETE;
477 cz_pb_mgr.v_cz_enodes_prop_id_ref.delete;
478 END IF;
479 ELSIF(p_table_name = 'cz_rules') THEN
480 IF (p_table_type = 'ref') THEN
481 cz_pb_mgr.v_cz_rules_rule_id_old_ref.DELETE;
482 cz_pb_mgr.v_cz_rules_rule_id_new_ref.DELETE;
483 cz_pb_mgr.v_cz_rules_persistent_id_ref.DELETE;
484 cz_pb_mgr.v_cz_rules_rule_id_idx_ref.DELETE;
485 cz_pb_mgr.v_cz_rules_rf_id_ref.DELETE;
486 cz_pb_mgr.v_cz_rules_proj_id_ref.DELETE;
487 cz_pb_mgr.v_cz_rules_comp_id_ref.DELETE;
488 cz_pb_mgr.v_cz_rules_ant_id_ref.DELETE;
489 cz_pb_mgr.v_cz_rules_con_id_ref.DELETE;
490 cz_pb_mgr.v_cz_rules_rea_id_ref.DELETE;
491 cz_pb_mgr.v_cz_rules_eff_id_ref.DELETE;
492 cz_pb_mgr.v_cz_rules_unmsg_id_ref.DELETE;
493 cz_pb_mgr.v_cz_rules_expl_ref.DELETE;
494 cz_pb_mgr.v_cz_rules_sig_ref.DELETE;
495 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
496 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
497 cz_pb_mgr.v_cz_rules_obj_ref.DELETE;
498 cz_pb_mgr.v_cz_rules_sig_idx_ref.DELETE;
499 cz_pb_mgr.v_cz_rules_ui_ref.DELETE;
500 END IF;
501 ELSIF(p_table_name = 'cz_des_chart_features')
502 THEN
503 IF (p_table_type = 'ref')
504 THEN
505 cz_pb_mgr.v_cz_des_feature_id_old_ref.DELETE;
506 cz_pb_mgr.v_cz_des_feature_id_new_ref.DELETE;
507 cz_pb_mgr.v_cz_des_feature_rid_new_ref.DELETE;
508 cz_pb_mgr.v_cz_des_feature_rule_id_ref.DELETE;
509 cz_pb_mgr.v_cz_des_feature_mrefl_id_ref.DELETE;
510 cz_pb_mgr.v_cz_des_feature_ft_typ_ref.DELETE;
511 END IF;
512 ELSIF(p_table_name = 'cz_des_chart_cells')
513 THEN
514 IF (p_table_type = 'ref')
515 THEN
516 cz_pb_mgr.v_cz_des_cells_rule_id_new_ref.DELETE;
517 cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.DELETE;
518 cz_pb_mgr.v_cz_des_cells_sf_id_ref.DELETE;
519 cz_pb_mgr.v_cz_des_cells_sopt_id_ref.DELETE;
520 cz_pb_mgr.v_cz_des_cells_popt_id_ref.DELETE;
521 cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.DELETE;
522 END IF;
523 ELSIF(p_table_name = 'cz_lce_headers')
524 THEN
525 cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
526 cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
527 cz_pb_mgr.v_cz_intl_text_idx_ref.DELETE;
528 cz_pb_mgr.v_cz_intl_unmsg_idx_ref.DELETE;
529 cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
530 cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
531 cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
532 cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
533 ELSIF(p_table_name = 'cz_lce_load_specs')
534 THEN
535 cz_pb_mgr.v_specs_net_type_ref.DELETE;
536 cz_pb_mgr.v_specs_attach_expl_id_ref.DELETE;
537 cz_pb_mgr.v_specs_lce_header_id_ref.DELETE;
538 cz_pb_mgr.v_specs_required_expl_id_ref.DELETE;
539 cz_pb_mgr.v_specs_attach_comp_id_ref.DELETE;
540 cz_pb_mgr.v_specs_model_id_ref.DELETE;
541 cz_pb_mgr.v_specs_alias_name_ref.DELETE;
542 END IF;
543 EXCEPTION
544 WHEN OTHERS
545 THEN
546 x_status := PUBLICATION_ERROR;
547 RAISE;
548 END;
549
550 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
551 ------error and log messages are trapped
552 PROCEDURE error_msg_populate(p_msg VARCHAR2, p_caller VARCHAR2, p_code NUMBER)
553 AS
554 record_count PLS_INTEGER := 0;
555 BEGIN
556 record_count := cz_pb_mgr.v_msg_tbl.COUNT + 1;
557 cz_pb_mgr.v_msg_tbl(record_count).msg_text := LTRIM(RTRIM(SUBSTR(p_msg, 1, 2000)));
558 cz_pb_mgr.v_msg_tbl(record_count).called_proc := p_caller;
559 cz_pb_mgr.v_msg_tbl(record_count).sql_code := pbdebug;
560 EXCEPTION
561 WHEN OTHERS
562 THEN
563 cz_pb_mgr.v_err_message := 'Error in populating messages: ' || SQLERRM;
564 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
565 END error_msg_populate;
566
567 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
568 PROCEDURE log_report(p_pkg_name VARCHAR2, p_routine VARCHAR2, p_ndebug NUMBER, p_msg VARCHAR2, p_log_level NUMBER)
569 IS
570 PRAGMA AUTONOMOUS_TRANSACTION;
571 l_module_name VARCHAR2(2000);
572 BEGIN
573 IF (p_log_level >= fnd_log.g_current_runtime_level)
574 THEN
575 l_module_name := 'cz.plsql.' || p_pkg_name || '.' || p_routine || '.' || p_ndebug;
576 fnd_log.STRING(p_log_level, l_module_name, p_msg);
577 COMMIT;
578 END IF;
579 EXCEPTION
580 WHEN OTHERS
581 THEN
582 ROLLBACK;
583 END log_report;
584
585 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
586 --------------------procedure to log errors during the publication process
587 PROCEDURE log_pb_errors(p_message IN VARCHAR2, p_urgency IN VARCHAR2, p_caller IN VARCHAR2, p_statuscode IN PLS_INTEGER)
588 AS
589 v_message VARCHAR2(2000) := NULL;
590 BEGIN
591 IF (p_message IS NOT NULL)
592 THEN
593 v_message := LTRIM(RTRIM(SUBSTR(p_message, 1, 2000)));
594 ELSE
595 v_message := 'Check SQLCODE in statuscode field. ';
596 END IF;
597
598 IF fnd_global.conc_request_id > 0
599 THEN
600 fnd_file.put_line(fnd_file.LOG, v_message);
601 END IF;
602
603 INSERT INTO cz_db_logs
604 (logtime, loguser, urgency, caller, statuscode, MESSAGE, message_id, run_id
605 )
606 VALUES (SYSDATE, cz_pb_mgr.loguser, p_urgency, p_caller, p_statuscode, v_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id
607 );
608
609 COMMIT;
610 EXCEPTION
611 WHEN OTHERS
612 THEN
613 cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
614 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
615 END log_pb_errors;
616
617 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
618 ------procedure that logs timing message
619 PROCEDURE log_timing_message(p_msg IN VARCHAR2)
620 IS
621 BEGIN
622 log_pb_errors(p_msg, 2, 'cz_pb_mgr_TIMING', 55);
623 END;
624
625 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
626 PROCEDURE log_pb_trace
627 AS
628 l_msg VARCHAR2(2000);
629 BEGIN
630 -----------log trace
631 IF ((cz_pb_mgr.v_root_model_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
632 THEN
633 cz_pb_mgr.v_err_message := 'Parent model in publication (migration) request : ' || TO_CHAR(cz_pb_mgr.v_root_model_id);
634 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
635 cz_pb_mgr.v_err_message :=
636 'Source publication : ' || cz_pb_mgr.v_cz_model_pub_old_id || ' target publication: ' || cz_pb_mgr.v_cz_model_pub_new_id;
637 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
638 END IF;
639
640 IF (cz_pb_mgr.v_msg_tbl.COUNT > 0)
641 THEN
642 FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
643 LOOP
644 IF fnd_global.conc_request_id > 0
645 THEN
646 fnd_file.put_line(fnd_file.LOG, cz_pb_mgr.v_msg_tbl(i).msg_text);
647 END IF;
648
649 BEGIN
650 INSERT INTO cz_db_logs
651 (logtime, caller, statuscode, MESSAGE
652 ,message_id, creation_date, run_id
653 )
654 VALUES (SYSDATE, cz_pb_mgr.v_msg_tbl(i).called_proc, cz_pb_mgr.v_msg_tbl(i).sql_code, cz_pb_mgr.v_msg_tbl(i).msg_text
655 ,cz_pb_mgr.v_publication_id, SYSDATE, cz_pb_mgr.v_pb_run_id
656 );
657 EXCEPTION
658 WHEN OTHERS
659 THEN
660 RAISE;
661 END;
662
663 log_report('cz_pb_mgr'
664 ,cz_pb_mgr.v_msg_tbl(i).called_proc
665 ,cz_pb_mgr.v_msg_tbl(i).sql_code
666 ,cz_pb_mgr.v_msg_tbl(i).msg_text
667 ,fnd_log.level_error
668 );
669 END LOOP;
670
671 COMMIT;
672 END IF;
673
674 IF ((cz_pb_mgr.v_msg_tbl.COUNT > 0) AND(cz_pb_mgr.v_session_parameter = model_copy) AND(cz_pb_mgr.v_status_code = PUBLICATION_ERROR))
675 THEN
676 fnd_msg_pub.initialize;
677
678 FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
679 LOOP
680 IF ((cz_pb_mgr.v_msg_tbl(i).msg_text IS NOT NULL) AND(cz_pb_mgr.v_msg_tbl(i).msg_text NOT LIKE '%publication%'))
681 THEN
682 fnd_message.set_name('CZ', 'CZ_MODEL_COPY_ERR');
683 fnd_message.set_token('ERRORMSG', cz_pb_mgr.v_msg_tbl(i).msg_text);
684 fnd_msg_pub.ADD;
685 END IF;
686 END LOOP;
687 END IF;
688
689 cz_pb_mgr.v_msg_tbl.DELETE;
690 EXCEPTION
691 WHEN OTHERS
692 THEN
693 cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
694 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
695 cz_pb_mgr.v_msg_tbl.DELETE;
696 END log_pb_trace;
697
698 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
699 --------------sequence no generator function
700 FUNCTION sequence_generate(seq_const PLS_INTEGER, seq_name VARCHAR2, p_oraclesequenceincr NUMBER)
701 RETURN NUMBER
702 AS
703 seq_cv ref_cursor;
704 l_sequence_gen NUMBER;
705
706 cz_pb_no_incrementor EXCEPTION;
707 BEGIN
708
709 IF(p_oraclesequenceincr = 0)THEN
710 cz_pb_mgr.v_err_message := 'The sequence incrementor cannot be 0.';
711 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', 70001);
712 RAISE cz_pb_no_incrementor;
713 END IF;
714
715 IF (cz_pb_mgr.v_sequence_count.EXISTS(seq_const))
716 THEN
717 l_sequence_gen := cz_pb_mgr.v_sequence_count(seq_const) + 1;
718 ELSE
719 l_sequence_gen := 0; -- Will fall into this statement only for a New session
720 END IF;
721
722 -- We will grab a new sequence from the sequencer only in case of
723 -- 1. New session OR
724 -- 2. If the running sequence count has reached the last sequence in the block
725 IF (l_sequence_gen = 0 OR(l_sequence_gen = cz_pb_mgr.v_next_sequence_gen(seq_const)))
726 THEN
727 BEGIN
728 OPEN seq_cv FOR 'SELECT ' || seq_name || ' FROM dual';
729
730 LOOP
731 FETCH seq_cv
732 INTO l_sequence_gen;
733
734 EXIT WHEN seq_cv%NOTFOUND;
735 END LOOP;
736
737 CLOSE seq_cv;
738 EXCEPTION
739 WHEN OTHERS
740 THEN
741 cz_pb_mgr.v_err_message := 'Error in getting the next sequence value : ' || SQLERRM;
742 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
743 RAISE;
744 END;
745
746 cz_pb_mgr.v_next_sequence_gen(seq_const) := l_sequence_gen + p_oraclesequenceincr;
747 END IF;
748
749 cz_pb_mgr.v_sequence_count(seq_const) := l_sequence_gen;
750 RETURN l_sequence_gen;
751 EXCEPTION
752 WHEN OTHERS THEN
753 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
754 RAISE;
755 END sequence_generate;
756
757 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
758 ----update orig_sys_ref of cz_localized_texts to NULL
759 PROCEDURE update_localized_texts
760 AS
761 BEGIN
762 IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
763 THEN
764 EXECUTE IMMEDIATE 'BEGIN'
765 || ' '
766 || 'FOR I IN cz_pb_mgr.v_cz_intl_text_new_ref.FIRST..cz_pb_mgr.v_cz_intl_text_new_ref.LAST'
767 || ' '
768 || 'LOOP'
769 || ' '
770 || 'UPDATE cz_localized_texts'
771 || cz_pb_mgr.v_db_link
772 || ' t'
773 || ' '
774 || 'SET t.orig_sys_ref = NULL'
775 || ' '
776 || 'WHERE t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i)'
777 || ' '
778 || 'AND t.orig_sys_ref IS NOT NULL;'
779 || ' '
780 || 'END LOOP;'
781 || ' '
782 || 'EXCEPTION'
783 || ' '
784 || 'WHEN OTHERS THEN'
785 || ' '
786 || 'ROLLBACK;'
787 || ' '
788 || 'END;';
789
790 COMMIT;
791 END IF;
792 EXCEPTION
793 WHEN OTHERS
794 THEN
795 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_localized_texts', 'SQLERRM', SQLERRM);
796 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDLOCALTEXT', SQLCODE);
797 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
798 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
799 RAISE;
800 END;
801
802 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
803 ----update orig_sys_ref of cz_localized_texts to target values during model migration.
804 PROCEDURE update_mm_localized_texts
805 AS
806 BEGIN
807 IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
808 THEN
809 EXECUTE IMMEDIATE 'DECLARE'
810 || ' '
811 || 'orig_sys_ref_tgt VARCHAR2(100);'
812 || ' '
813 || 'base_lang VARCHAR2(10);'
814 || ' '
815 || 'BEGIN'
816 || ' '
817 || ' SELECT language_code into base_lang FROM fnd_languages WHERE installed_flag = ''B'';'
818 || ' '
819 || 'FOR I IN cz_pb_mgr.v_cz_intl_text_new_ref.FIRST..cz_pb_mgr.v_cz_intl_text_new_ref.LAST'
820 || ' '
821 || 'LOOP'
822 || ' '
823 || 'orig_sys_ref_tgt := NULL;'
824 || ' '
825 || 'BEGIN'
826 || ' '
827 || 'SELECT DECODE(cz_pb_mgr.bomsynch_flag,''Y'', cz_bom_synch.locText_origSysRef(t.orig_sys_ref),t.orig_sys_ref)'
828 || ' '
829 || 'INTO orig_sys_ref_tgt'
830 || ' '
831 || 'FROM cz_localized_texts'
832 || cz_pb_mgr.v_db_link
833 || ' t'
834 || ' '
835 || 'WHERE t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i) AND t.orig_sys_ref IS NOT NULL AND t.language = base_lang;'
836 || ' '
837 || 'UPDATE cz_localized_texts'
838 || cz_pb_mgr.v_db_link
839 || ' t'
840 || ' '
841 || 'SET t.orig_sys_ref = orig_sys_ref_tgt'
842 || ' '
843 || 'WHERE t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i)'
844 || ' '
845 || 'AND t.orig_sys_ref IS NOT NULL;'
846 || ' '
847 || 'EXCEPTION'
848 || ' '
849 || 'WHEN NO_DATA_FOUND THEN'
850 || ' '
851 || 'NULL;'
852 || ' '
853 || 'END;'
854 || ' '
855 || 'END LOOP;'
856 || ' '
857 || 'EXCEPTION'
858 || ' '
859 || 'WHEN OTHERS THEN'
860 || ' '
861 || 'ROLLBACK;'
862 || ' '
863 || 'END;';
864 COMMIT;
865 END IF;
866 EXCEPTION
867 WHEN OTHERS
868 THEN
869 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_localized_texts', 'SQLERRM', SQLERRM);
870 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDLOCALTEXT', SQLCODE);
871 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
872 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
873 RAISE;
874 END;
875
876 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
877 -- id_type: null means all input ids not seeded nor from special fields, so have
878 -- to be resolved; not null implies an id in the array may or may not be resolved,
879 -- depending on the id value and its type (e.g., seeded, special type/value).
880 -- ignore id mapping failure here for a. 'seeded' ids b. ui rules' rule_folder_id
881 -- because it is useless (and because it may have a non-zero value) c. explicit
882 -- compatability rule's primary opt id (not real fks) d. reference id and component_id
883 -- because there are updates on them after new record insertion e. expression nodes'
884 -- ps_node_id because node could be deleted f. ui node's ui_node_ref_id because they
885 -- are specially handled after insertion (or obsolete anyway)
886 PROCEDURE resolve_ids(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
887 resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref,
888 array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
889 resolving_id IN VARCHAR2,
890 id_type IN VARCHAR2 DEFAULT NULL
891 )
892 IS
893 l_use_old_id BOOLEAN;
894 BEGIN
895 IF cz_pb_mgr.v_status_code=PUBLICATION_ERROR OR array_to_resolve.COUNT=0 THEN RETURN; END IF;
896
897 FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
898 LOOP
899 BEGIN
900 IF array_to_resolve(j) IS NOT NULL THEN
901 resolved_array(j) := array_of_new_keys(array_to_resolve(j));
902 END IF;
903 EXCEPTION
904 WHEN NO_DATA_FOUND THEN
905 IF array_to_resolve(j) = 0 THEN
906 IF cz_pb_mgr.v_session_parameter = pub_model THEN
907 resolved_array(j) := 1;
908 ELSE
909 resolved_array(j) := 0;
910 END IF;
911 ELSE
912 IF id_type IS NULL THEN
913 l_use_old_id := FALSE;
914 ELSE
915 l_use_old_id := (id_type=FLD_IGNORE_NOW OR
916 id_type=ENTITY_TYPE_UCT AND array_to_resolve(j)<NONSEED_UCT_MIN_ID OR
917 id_type=ENTITY_TYPE_UMT AND array_to_resolve(j)<NONSEED_UMT_MIN_ID OR
918 id_type=ENTITY_TYPE_SIGNATURE AND array_to_resolve(j)<NONSEED_SIGN_MIN_ID OR
919 id_type=ENTITY_TYPE_RULE AND array_to_resolve(j)<NONSEED_RULE_MIN_ID OR
920 id_type=ENTITY_TYPE_PROPERTY AND array_to_resolve(j)<NONSEED_PROP_MIN_ID OR
921 id_type=FLD_PSN_REFERENCE_ID AND
922 (cz_pb_mgr.v_models_not_to_be_exported.FIRST IS NOT NULL OR
923 cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES') OR
924 id_type=FLD_RULE_COMPONENT_ID AND cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES');
925 END IF;
926 IF l_use_old_id THEN
927 resolved_array(j) := array_to_resolve(j);
928 ELSE
929 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
930 cz_pb_mgr.v_err_message := 'Unable to resolve '||id_type||' id ('||resolving_id||'): '||to_char(array_to_resolve(j));
931 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
932 RAISE;
933 END IF;
934 END IF;
935 END;
936 END LOOP;
937 EXCEPTION
938 WHEN OTHERS THEN
939 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
940 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
941 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
942 cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
943 RAISE;
944 END resolve_ids;
945
946 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
947 PROCEDURE resolve_ids(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
948 array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
949 resolving_id IN VARCHAR2,
950 id_type IN VARCHAR2 DEFAULT NULL)
951 IS
952 BEGIN
953 resolve_ids(array_to_resolve,array_to_resolve,array_of_new_keys,resolving_id,id_type);
954 END resolve_ids;
955
956 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
957 -------procedure that resolves ids via single index keys and one additional array
958 PROCEDURE resolve_tmpl_ui_defs(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
959 resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref,
960 ui_templ_id_tbl IN OUT NOCOPY cz_pb_mgr.t_ref,
961 array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
962 resolving_id IN VARCHAR2
963 )
964 IS
965
966 l_seeded_flag VARCHAR2(1);
967
968 BEGIN
969
970 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
971 IF (array_to_resolve.COUNT > 0) THEN
972 FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
973 LOOP
974 BEGIN
975 IF (array_to_resolve(j) IS NOT NULL) THEN
976 resolved_array(j) := array_of_new_keys(array_to_resolve(j));
977 END IF;
978 EXCEPTION
979 WHEN NO_DATA_FOUND THEN
980 IF (array_to_resolve(j) = 0 AND(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)) THEN
981
982 IF NOT(ui_templ_id_tbl(j)=0 OR ui_templ_id_tbl(j) IS NULL) THEN
983
984 SELECT seeded_flag INTO l_seeded_flag FROM CZ_UI_TEMPLATES
985 WHERE template_id=ui_templ_id_tbl(j) AND ui_def_id=0;
986
987 IF l_seeded_flag='1' THEN
988 resolved_array(j) := 0;
989 ELSE
990 resolved_array(j) := 1;
991 END IF;
992
993 END IF;
994
995 ELSE
996 resolved_array(j) := array_to_resolve(j);
997 END IF;
998 END;
999 END LOOP;
1000 END IF;
1001 END IF;
1002
1003 EXCEPTION
1004 WHEN OTHERS THEN
1005 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
1006 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
1007 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1008 cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
1009 END resolve_tmpl_ui_defs;
1010 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1011 PROCEDURE resolve_tmpl_ui_defs(
1012 p_array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
1013 ,p_templ_array IN OUT NOCOPY cz_pb_mgr.t_ref
1014 ,p_table_name IN VARCHAR2
1015 )
1016 IS
1017 BEGIN
1018 IF (p_array_to_resolve.COUNT > 0)
1019 THEN
1020 FOR i IN p_array_to_resolve.FIRST .. p_array_to_resolve.LAST
1021 LOOP
1022 BEGIN
1023 IF ((p_array_to_resolve(i) IS NOT NULL) AND(p_templ_array(i) IS NOT NULL))
1024 THEN
1025 IF ((p_array_to_resolve(i) = 0))
1026 THEN
1027 IF ( (NOT cz_pb_mgr.g_ui_templates_idx_temp_ref.EXISTS(p_templ_array(i)))
1028 OR (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1029 )
1030 THEN
1031 p_array_to_resolve(i) := 0;
1032 ELSE
1033 p_array_to_resolve(i) := 1;
1034 END IF;
1035 END IF;
1036 ELSE
1037 BEGIN
1038 p_array_to_resolve(i) := cz_pb_mgr.v_cz_ui_defs_idx_ref(p_array_to_resolve(i));
1039 EXCEPTION
1040 WHEN OTHERS
1041 THEN
1042 NULL;
1043 END;
1044 END IF;
1045 EXCEPTION
1046 WHEN NO_DATA_FOUND
1047 THEN
1048 p_array_to_resolve(i) := 0;
1049 END;
1050 END LOOP;
1051 END IF;
1052 EXCEPTION
1053 WHEN OTHERS
1054 THEN
1055 cz_pb_mgr.v_err_message := 'Error in resolving template ui def id of: ' || p_table_name || ' : ' || SQLERRM;
1056 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'RESOLVETEMPLUIDEFS', SQLCODE);
1057 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1058 RAISE;
1059 END resolve_tmpl_ui_defs;
1060 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1061 PROCEDURE resolve_intl_texts(
1062 array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
1063 ,array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
1064 ,resolving_id IN VARCHAR2
1065 )
1066 IS
1067 BEGIN
1068 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
1069 THEN
1070 IF (array_to_resolve.COUNT > 0)
1071 THEN
1072 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
1073 LOOP
1074 BEGIN
1075 IF (array_to_resolve(j) IS NOT NULL)
1076 THEN
1077 array_to_resolve(j) := array_of_new_keys(array_to_resolve(j));
1078 END IF;
1079 EXCEPTION
1080 WHEN NO_DATA_FOUND
1081 THEN
1082 IF (array_to_resolve(j) > 1000)
1083 THEN
1084 cz_pb_mgr.v_err_message :=
1085 'Resolution error for: ' || resolving_id || ' : ' || TO_CHAR(array_to_resolve(j)) || ' : '
1086 || SQLERRM;
1087 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
1088 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1089 RAISE;
1090 END IF;
1091 END;
1092 END LOOP;
1093 END IF;
1094 END IF;
1095 EXCEPTION
1096 WHEN OTHERS
1097 THEN
1098 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
1099 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
1100 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1101 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
1102 END resolve_intl_texts;
1103
1104 ------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
1105 PROCEDURE insert_into_item_tables(
1106 table_name IN VARCHAR2
1107 ,primary_key IN VARCHAR2
1108 ,db_link IN VARCHAR2
1109 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1110 ,plsql_table_name IN VARCHAR2
1111 ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
1112 )
1113 AS
1114 v_cursor NUMBER;
1115 v_numrows NUMBER;
1116 v_insertstring VARCHAR2(10000);
1117 current_column VARCHAR2(128);
1118 v_db_link VARCHAR2(128);
1119 v_last NUMBER;
1120 l_len NUMBER;
1121
1122 CURSOR col_name_cur(par_table_name VARCHAR2)
1123 IS
1124 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
1125 --the logical column for a logical object than a physical columns
1126 SELECT col.column_name
1127 FROM user_synonyms syn, all_tab_columns col
1128 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
1129 AND col.owner = syn.table_owner
1130 AND col.table_name = syn.table_name;
1131
1132
1133 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
1134
1135 col_list col_name_table;
1136 i BINARY_INTEGER := 1;
1137 match_found BOOLEAN;
1138 BEGIN
1139 IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
1140 THEN
1141 v_db_link := db_link;
1142 cz_pb_mgr.v_insert_table_name := table_name;
1143
1144 BEGIN
1145 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || ' LOOP ';
1146 v_insertstring := v_insertstring || ' BEGIN insert into ' || table_name || v_db_link || ' (';
1147
1148 OPEN col_name_cur(table_name);
1149
1150 LOOP
1151 FETCH col_name_cur
1152 INTO current_column;
1153
1154 EXIT WHEN col_name_cur%NOTFOUND;
1155 col_list(i) := LTRIM(RTRIM(current_column));
1156 i := i + 1;
1157 v_insertstring := v_insertstring || current_column || ',';
1158 END LOOP;
1159
1160 CLOSE col_name_cur;
1161
1162 v_insertstring := RTRIM(v_insertstring, ',');
1163 v_insertstring := v_insertstring || ')';
1164 v_insertstring := v_insertstring || ' select ';
1165
1166 IF (col_list.COUNT > 0)
1167 THEN
1168 FOR j IN col_list.FIRST .. col_list.LAST
1169 LOOP
1170 match_found := FALSE;
1171
1172 IF (plsql_table_list.COUNT > 0)
1173 THEN
1174 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1175 LOOP
1176 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1177 THEN
1178 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1179 match_found := TRUE;
1180 EXIT;
1181 END IF;
1182 END LOOP;
1183 END IF;
1184
1185 IF (NOT match_found)
1186 THEN
1187 v_insertstring := v_insertstring || col_list(j) || ',';
1188 END IF;
1189 END LOOP;
1190 END IF;
1191
1192 v_insertstring := RTRIM(v_insertstring, ',');
1193 v_insertstring :=
1194 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
1195 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1196 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; ';
1197 v_insertstring := v_insertstring || ' EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ';
1198 v_insertstring := v_insertstring || ' IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_MASTERS'') THEN ';
1199 v_insertstring := v_insertstring || ' UPDATE cz_item_masters' || cz_pb_mgr.v_db_link || ' t ';
1200 v_insertstring := v_insertstring || ' SET ( ITEM_TYPE_ID,DESC_TEXT,ORIG_SYS_REF,REF_PART_NBR,QUOTEABLE_FLAG,LEAD_TIME ';
1201 v_insertstring := v_insertstring || ' ,ITEM_STATUS,PRIMARY_UOM_CODE,DELETED_FLAG,DECIMAL_QTY_FLAG) ';
1202 v_insertstring := v_insertstring || ' = ( SELECT ITEM_TYPE_ID,DESC_TEXT,orig_sys_ref,REF_PART_NBR, ';
1203 v_insertstring := v_insertstring || ' QUOTEABLE_FLAG ,LEAD_TIME,ITEM_STATUS,PRIMARY_UOM_CODE, DELETED_FLAG,DECIMAL_QTY_FLAG ';
1204 v_insertstring := v_insertstring || ' FROM cz_item_masters WHERE cz_item_masters.item_id = ' || plsql_table_name || '(m) ';
1205 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'') WHERE t.item_id = ' || plsql_table_name || '(m); ';
1206 v_insertstring := v_insertstring || ' ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPES'') THEN ';
1207 v_insertstring := v_insertstring || ' UPDATE cz_item_types' || cz_pb_mgr.v_db_link || ' t ';
1208 v_insertstring := v_insertstring || ' SET (DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
1209 v_insertstring := v_insertstring || ' ,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF) ';
1210 v_insertstring := v_insertstring || ' = (SELECT DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
1211 v_insertstring := v_insertstring || ' ,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF ';
1212 v_insertstring := v_insertstring || ' FROM cz_item_types WHERE cz_item_types.item_type_id = ' || plsql_table_name || '(m) ';
1213 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'') WHERE t.item_type_id = ' || plsql_table_name || '(m); ';
1214 v_insertstring := v_insertstring || ' ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_PROPERTIES'') THEN ';
1215 v_insertstring := v_insertstring || ' UPDATE cz_properties' || cz_pb_mgr.v_db_link || ' t ';
1216 v_insertstring := v_insertstring || ' SET ( PROPERTY_UNIT,DESC_TEXT,NAME,DATA_TYPE,DEF_VALUE,USER_NUM01 ';
1217 v_insertstring := v_insertstring || ' ,USER_NUM02,USER_NUM03,USER_NUM04,USER_STR01,USER_STR02,USER_STR03,USER_STR04 ';
1218 v_insertstring := v_insertstring || ' ,DELETED_FLAG,EFF_FROM,EFF_TO,ORIG_SYS_REF) = (SELECT PROPERTY_UNIT,DESC_TEXT,';
1219 v_insertstring := v_insertstring || ' NAME,DATA_TYPE,DEF_VALUE,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04,';
1220 v_insertstring := v_insertstring || ' USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,EFF_FROM,';
1221 v_insertstring := v_insertstring || ' EFF_TO,ORIG_SYS_REF FROM cz_properties ';
1222 v_insertstring := v_insertstring || ' WHERE cz_properties.property_id = ' || plsql_table_name || '(m) ';
1223 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'') WHERE t.property_id = ' || plsql_table_name || '(m); ';
1224 v_insertstring := v_insertstring || ' END IF; END; END LOOP; COMMIT; END; ';
1225
1226 EXECUTE IMMEDIATE v_insertstring;
1227
1228 COMMIT;
1229 EXCEPTION
1230 WHEN OTHERS
1231 THEN
1232 ROLLBACK;
1233 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1234 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
1235 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1236 cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
1237 RAISE;
1238 END;
1239 END IF;
1240 EXCEPTION
1241 WHEN OTHERS
1242 THEN
1243 RAISE;
1244 END insert_into_item_tables;
1245
1246 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1247 ----generates new publication id for the target publication
1248 PROCEDURE get_new_publication_id(
1249 p_old_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1250 ,x_old_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1251 ,x_new_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1252 ,x_old_rem_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
1253 ,x_status IN OUT NOCOPY VARCHAR2
1254 )
1255 AS
1256 BEGIN
1257 IF (x_status <> PUBLICATION_ERROR)
1258 THEN
1259 IF (cz_pb_mgr.v_server_id <> 0)
1260 THEN
1261 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
1262 , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
1263 ,cz_pb_mgr.v_oraclesequenceincr
1264 )
1265 ,publication_id, remote_publication_id
1266 INTO x_new_pub_id
1267 ,x_old_pb_id, x_old_rem_pb_id
1268 FROM cz_model_publications
1269 WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1270 ELSE
1271 SELECT cz_model_publications_s.NEXTVAL, publication_id, remote_publication_id
1272 INTO x_new_pub_id, x_old_pb_id, x_old_rem_pb_id
1273 FROM cz_model_publications
1274 WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1275 END IF;
1276 END IF;
1277 EXCEPTION
1278 WHEN OTHERS
1279 THEN
1280 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
1281 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUB', SQLCODE);
1282 x_status := PUBLICATION_ERROR;
1283 RAISE;
1284 END get_new_publication_id;
1285
1286 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1287 PROCEDURE insert_item_tables(
1288 table_name IN VARCHAR2
1289 ,primary_key1 IN VARCHAR2
1290 ,primary_key2 IN VARCHAR2
1291 ,db_link IN VARCHAR2
1292 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1293 ,plsql_table_name1 IN VARCHAR2
1294 ,plsql_table_name2 IN VARCHAR2
1295 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1296 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1297 )
1298 AS
1299 v_cursor NUMBER;
1300 v_numrows NUMBER;
1301 v_insertstring VARCHAR2(10000);
1302 current_column VARCHAR2(128);
1303 v_db_link VARCHAR2(128);
1304 v_last NUMBER;
1305
1306 CURSOR col_name_cur(par_table_name VARCHAR2)
1307 IS
1308 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
1309 --the logical column for a logical object than a physical columns
1310 SELECT col.column_name
1311 FROM user_synonyms syn, all_tab_columns col
1312 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
1313 AND col.owner = syn.table_owner
1314 AND col.table_name = syn.table_name;
1315
1316
1317 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
1318
1319 col_list col_name_table;
1320 i BINARY_INTEGER := 1;
1321 match_found BOOLEAN;
1322 BEGIN
1323 IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1324 THEN
1325 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1326 cz_pb_mgr.v_insert_table_name := table_name;
1327
1328 BEGIN
1329 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP ';
1330 v_insertstring := v_insertstring || 'BEGIN insert into ' || table_name || v_db_link || ' (';
1331
1332 OPEN col_name_cur(table_name);
1333
1334 LOOP
1335 FETCH col_name_cur
1336 INTO current_column;
1337
1338 EXIT WHEN col_name_cur%NOTFOUND;
1339 col_list(i) := LTRIM(RTRIM(current_column));
1340 i := i + 1;
1341 v_insertstring := v_insertstring || current_column || ',';
1342 END LOOP;
1343
1344 CLOSE col_name_cur;
1345
1346 v_insertstring := RTRIM(v_insertstring, ',');
1347 v_insertstring := v_insertstring || ')';
1348 v_insertstring := v_insertstring || ' select ';
1349
1350 IF (col_list.COUNT > 0)
1351 THEN
1352 FOR j IN col_list.FIRST .. col_list.LAST
1353 LOOP
1354 match_found := FALSE;
1355
1356 IF (plsql_table_list.COUNT > 0)
1357 THEN
1358 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1359 LOOP
1360 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1361 THEN
1362 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1363 match_found := TRUE;
1364 EXIT;
1365 END IF;
1366 END LOOP;
1367 END IF;
1368
1369 IF (NOT match_found)
1370 THEN
1371 v_insertstring := v_insertstring || col_list(j) || ',';
1372 END IF;
1373 END LOOP;
1374 END IF;
1375
1376 v_insertstring := RTRIM(v_insertstring, ',');
1377 v_insertstring :=
1378 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1379 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1380 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1381 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; ';
1382 v_insertstring := v_insertstring || ' EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ';
1383 v_insertstring := v_insertstring || ' IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPE_PROPERTIES'') THEN ';
1384 v_insertstring := v_insertstring || ' UPDATE cz_item_type_properties' || cz_pb_mgr.v_db_link || ' SET DELETED_FLAG = ''0'' ';
1385 v_insertstring := v_insertstring || ' WHERE PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1386 v_insertstring := v_insertstring || ' AND ITEM_TYPE_ID = ' || plsql_table_name2 || '(m); ';
1387 v_insertstring := v_insertstring || ' ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_PROPERTY_VALUES'') THEN ';
1388 v_insertstring := v_insertstring || ' UPDATE cz_item_property_values' || cz_pb_mgr.v_db_link || ' t SET ( PROPERTY_VALUE )= (SELECT PROPERTY_VALUE ';
1389 v_insertstring := v_insertstring || ' FROM cz_item_property_values WHERE PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1390 v_insertstring := v_insertstring || ' AND ITEM_ID = ' || plsql_table_name2 || '(m) ) WHERE t.PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1391 v_insertstring := v_insertstring || ' AND t.ITEM_ID = ' || plsql_table_name2 || '(m); ';
1392 v_insertstring := v_insertstring || ' END IF; END; END LOOP; COMMIT; END; ';
1393
1394 EXECUTE IMMEDIATE v_insertstring;
1395
1396 COMMIT;
1397 EXCEPTION
1398 WHEN OTHERS
1399 THEN
1400 ROLLBACK;
1401 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1402 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
1403 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1404 cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
1405 RAISE;
1406 END;
1407 END IF;
1408
1409 COMMIT;
1410 END insert_item_tables;
1411
1412 /* Procedure to insert dev num val for translateable properties of CZ_PROPERTIES into localized texts*/
1413
1414 PROCEDURE mm_ins_def_num_val_in_intl AS
1415 l_sql_str varchar2(4000);
1416 lang_count number;
1417 BEGIN
1418
1419 select count(1) into lang_count from fnd_languages where installed_flag in('I','B');
1420
1421 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.COUNT > 0))
1422 THEN
1423
1424 --The mm_intl_text_model_id_ref table contains model_id of intl texts.
1425 -- mm_intl_text_model_id_ref already resolved in mm_sync_properties (put step) using h_devl_prj_by_intl_text map
1426
1427 l_sql_str:='BEGIN'
1428 || ' '
1429 || 'cz_pb_mgr.v_expr_count := 0;'
1430 || ' '
1431 || 'FOR I IN cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.FIRST .. cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.LAST'
1432 || ' '
1433 || 'LOOP'
1434 || ' INSERT INTO cz_localized_texts'
1435 || cz_pb_mgr.v_db_link
1436 || '('
1437 || ' '
1438 || 'intl_text_id,localized_str,ui_def_id,ORIG_SYS_REF,model_id,source_lang,language)'
1439 || ' '
1440 || 'select cz_pb_mgr.mm_v_tbl_prop_vals_trans_new(i),localized_str,ui_def_id,ORIG_SYS_REF,cz_pb_mgr.mm_intl_text_model_id_ref(i),source_lang,language'
1441 || ' '
1442 || ' from cz_localized_texts where intl_text_id=cz_pb_mgr.mm_v_tbl_prop_vals_trans_old(i);'
1443 || ' '
1444 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
1445 || ' '
1446 || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
1447 || ' '
1448 || 'END IF;'
1449 || ' '
1450 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count +'||lang_count||';'
1451 || ' '
1452 || 'END LOOP;'
1453 || ' '
1454 || 'END;';
1455
1456 EXECUTE IMMEDIATE l_sql_str;
1457 END IF;
1458
1459 COMMIT;
1460 EXCEPTION
1461 WHEN OTHERS
1462 THEN
1463 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'CZ_LOCALIZED_TEXTS', 'SQLERRM', SQLERRM);
1464 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_localized_texts', SQLCODE);
1465 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1466 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
1467 RAISE;
1468 END;
1469
1470
1471 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1472 PROCEDURE insert_item_schema
1473 IS
1474 plsql_table_list cz_pb_mgr.col_plsql_table_list;
1475 rec_count NUMBER;
1476 tmp_array_count NUMBER;
1477 BEGIN
1478 --All reading has been moved to load_data->read_item_schema.
1479
1480 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1481 THEN
1482 mm_v_tbl_sync_prop_vals_num.DELETE;
1483 mm_v_tbl_prop_vals_trans_old.DELETE;
1484 mm_v_tbl_prop_vals_trans_new.DELETE;
1485 mm_v_ht_sync_all_prop_val_num.DELETE;
1486 mm_v_ht_sync_all_prop.DELETE;
1487 mm_v_tbl_sync_prop_type.DELETE;
1488 mm_v_tbl_sync_prop_folder.DELETE;
1489 mm_v_tbl_sync_prop.DELETE;
1490 mm_v_ht_sync_item_type.DELETE;
1491 mm_v_ht_sync_item_type_items.DELETE;
1492 mm_v_ht_sync_items.DELETE;
1493 mm_v_ht_sync_item_prop.DELETE;
1494 mm_v_ht_sync_item_type_prop.DELETE;
1495 mm_v_ht_sync_itmtype_for_prop.DELETE;
1496 mm_v_ht_sync_it_propval_itm.DELETE;
1497 mm_v_ht_sync_ps_propval.DELETE;
1498 mm_v_ht_sync_it_propval.DELETE;
1499 mm_v_ht_eff_set_tbl_t.DELETE;
1500 mm_v_ht_eff_set_tbl_s.DELETE;
1501 mm_v_ht_sync_exist_items.DELETE;
1502 mm_v_ht_sync_exist_item_types.DELETE; --Bug9180063
1503 mm_insert_array1.DELETE;
1504 mm_insert_array2.DELETE;
1505 mm_source_array1.DELETE;
1506 mm_source_array2.DELETE;
1507 mm_objtype_array.DELETE;
1508 mm_tgtfldr_array.DELETE;
1509
1510 mm_intl_text_model_id_ref.DELETE;
1511
1512 mm_sync_properties;
1513 mm_sync_itemschema;
1514 mm_migrate_into_ps_prop_vals;
1515 END IF;
1516
1517 -- ITEM TYPES
1518 plsql_table_list.DELETE;
1519 rec_count := 1;
1520 plsql_table_list(rec_count).col_name := 'item_type_id';
1521
1522 -- sure if we need to maintain a table for orig_sys_ref, if needed, we need to maintain a sync table
1523 -- for model migration and then resolve them before updating
1524 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1525 THEN
1526 cz_pb_mgr.mm_insert_array1.DELETE;
1527 cz_pb_mgr.mm_insert_array2.DELETE;
1528 cz_pb_mgr.mm_insert_array3.DELETE;
1529 cz_pb_mgr.mm_source_array1.DELETE;
1530 cz_pb_mgr.mm_source_array2.DELETE;
1531 cz_pb_mgr.mm_source_array3.DELETE;
1532 --get only those that need to be migrated
1533 mm_resolve_ids(cz_pb_mgr.v_item_types_new_ref
1534 ,cz_pb_mgr.mm_v_ht_sync_item_type
1535 ,'ITEM TYPES'
1536 ,cz_pb_mgr.mm_insert_array1
1537 ,cz_pb_mgr.mm_source_array1
1538 );
1539 --Bug9619157 . Only the item types not exists in target, needs to be moved to target instance and will
1540 -- have to resolve orig_sys_ref, not ALL the item types for the migrated model.
1541 -- So, we changed to mm_source_array1 from v_item_types_new_ref
1542
1543 mm_resolve_orig_refs(cz_pb_mgr.mm_source_array1
1544 ,cz_pb_mgr.mm_v_ht_item_types_orig_ref
1545 ,'ITEM TYPES - ORIG SYS REF'
1546 ,cz_pb_mgr.mm_insert_array3
1547 ,cz_pb_mgr.mm_source_array3
1548 );
1549
1550 IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1551
1552 tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1553
1554 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1555 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of item type source array: ' || tmp_array_count);
1556
1557 tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1558
1559 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1560 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item type id): ' || tmp_array_count);
1561
1562 tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1563
1564 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1565 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (orig_sys_ref item type ): ' || tmp_array_count);
1566
1567 mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM TYPE SOURCE');
1568 mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM TYPE INSERT');
1569 mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM TYPE ORIG_SYS_REF INSERT');
1570
1571 END IF;
1572
1573 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1574 rec_count := rec_count + 1;
1575 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1576 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1577 insert_into_item_tables('cz_item_types'
1578 ,'item_type_id'
1579 ,cz_pb_mgr.v_db_link
1580 ,plsql_table_list
1581 ,'cz_pb_mgr.mm_source_array1'
1582 ,cz_pb_mgr.mm_source_array1
1583 );
1584 --todo Bug9180063 Update the Non BOM item types, that have orig_sys_ref = 'NULL'
1585 BEGIN
1586 IF (cz_pb_mgr.mm_insert_array1.COUNT > 0)
1587 THEN
1588 EXECUTE IMMEDIATE 'BEGIN'
1589 || ' '
1590 || 'FOR I IN cz_pb_mgr.mm_insert_array1.FIRST..cz_pb_mgr.mm_insert_array1.LAST'
1591 || ' '
1592 || 'LOOP'
1593 || ' '
1594 || 'UPDATE cz_item_types'
1595 || cz_pb_mgr.v_db_link
1596 || ' t'
1597 || ' '
1598 || 'SET t.orig_sys_ref = NULL'
1599 || ' '
1600 || 'WHERE t.item_type_id = cz_pb_mgr.mm_insert_array1(i)'
1601 || ' '
1602 || 'AND t.orig_sys_ref = ''NULL'';'
1603 || ' '
1604 || 'END LOOP;'
1605 || ' '
1606 || 'END;';
1607 COMMIT;
1608 END IF;
1609 END;
1610 ELSE
1611 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_new_ref';
1612 rec_count := rec_count + 1;
1613 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1614 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_orig_ref';
1615 insert_into_item_tables('cz_item_types'
1616 ,'item_type_id'
1617 ,cz_pb_mgr.v_db_link
1618 ,plsql_table_list
1619 ,'cz_pb_mgr.v_item_types_new_ref'
1620 ,cz_pb_mgr.v_item_types_new_ref
1621 );
1622 END IF;
1623
1624 --ITEMS
1625 plsql_table_list.DELETE;
1626 rec_count := 1;
1627
1628 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1629 THEN
1630 cz_pb_mgr.mm_insert_array1.DELETE;
1631 cz_pb_mgr.mm_insert_array2.DELETE;
1632 cz_pb_mgr.mm_insert_array3.DELETE;
1633 cz_pb_mgr.mm_source_array1.DELETE;
1634 cz_pb_mgr.mm_source_array2.DELETE;
1635 cz_pb_mgr.mm_source_array3.DELETE;
1636
1637 mm_resolve_ids(cz_pb_mgr.v_item_masters_tbl
1638 ,cz_pb_mgr.mm_v_ht_sync_items
1639 ,'ITEMS - ITEM ARRAY'
1640 ,cz_pb_mgr.mm_insert_array1
1641 ,cz_pb_mgr.mm_source_array1
1642 );
1643
1644 --Bug9619157 : Changed the array for the same reason as stated for item types.
1645 -- Source array (mm_source_array1) can be shorter than v_item_masters_tbl because ht_sync_items only contains NEW items
1646 -- means items to create on target
1647
1648 mm_resolve_ids(cz_pb_mgr.mm_source_array1
1649 ,cz_pb_mgr.mm_v_ht_sync_item_type_items
1650 ,'ITEMS - ITEM TYPE ARRAY'
1651 ,cz_pb_mgr.mm_insert_array2
1652 ,cz_pb_mgr.mm_source_array2
1653 );
1654
1655 --Bug9619157 : Changed the array for the same reason as stated for item types.
1656 mm_resolve_orig_refs(cz_pb_mgr.mm_source_array1
1657 ,cz_pb_mgr.mm_v_ht_items_orig_ref
1658 ,'ITEMS - ORIG SYS REF'
1659 ,cz_pb_mgr.mm_insert_array3
1660 ,cz_pb_mgr.mm_source_array3
1661 );
1662 plsql_table_list(rec_count).col_name := 'item_id';
1663 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1664 rec_count := rec_count + 1;
1665 plsql_table_list(rec_count).col_name := 'item_type_id';
1666 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1667 rec_count := rec_count + 1;
1668 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1669 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1670
1671
1672 IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1673
1674 tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1675
1676 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1677 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of source array: ' || tmp_array_count);
1678
1679 tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1680
1681 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1682 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item_id): ' || tmp_array_count);
1683
1684 tmp_array_count := cz_pb_mgr.mm_insert_array2.COUNT;
1685
1686 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1687 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array2 (item_type): ' || tmp_array_count);
1688
1689 tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1690
1691 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1692 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (orig_sys_ref): ' || tmp_array_count);
1693
1694 mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM SOURCE');
1695 mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM INSERT');
1696 mm_dump_array(cz_pb_mgr.mm_insert_array2, 'ITEM TYPE INSERT');
1697 mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM ORIG_SYS_REF INSERT');
1698
1699 END IF;
1700
1701 insert_into_item_tables('cz_item_masters'
1702 ,'item_id'
1703 ,cz_pb_mgr.v_db_link
1704 ,plsql_table_list
1705 ,'cz_pb_mgr.mm_source_array1'
1706 ,cz_pb_mgr.mm_source_array1
1707 );
1708 ELSE
1709 plsql_table_list(rec_count).col_name := 'item_id';
1710 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_masters_tbl';
1711 rec_count := rec_count + 1;
1712 plsql_table_list(rec_count).col_name := 'item_type_id';
1713 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_tbl';
1714 rec_count := rec_count + 1;
1715 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1716 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_items_orig_ref';
1717 insert_into_item_tables('cz_item_masters'
1718 ,'item_id'
1719 ,cz_pb_mgr.v_db_link
1720 ,plsql_table_list
1721 ,'cz_pb_mgr.v_item_masters_tbl'
1722 ,cz_pb_mgr.v_item_masters_tbl
1723 );
1724 END IF;
1725
1726 --PROPERTIES (with RP_ENTRIES if model migration)
1727 plsql_table_list.DELETE;
1728 rec_count := 1;
1729
1730 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1731 THEN
1732 cz_pb_mgr.mm_insert_array1.DELETE;
1733 cz_pb_mgr.mm_insert_array2.DELETE;
1734 cz_pb_mgr.mm_objtype_array.DELETE;
1735 cz_pb_mgr.mm_tgtfldr_array.DELETE;
1736 cz_pb_mgr.mm_source_array1.DELETE;
1737 cz_pb_mgr.mm_source_array2.DELETE;
1738
1739 --insert into localized texts:ids which belong to translateable props
1740 mm_ins_def_num_val_in_intl;
1741
1742 mm_resolve_ids_w_rp_entries(cz_pb_mgr.v_remote_prop_ref
1743 ,cz_pb_mgr.mm_v_tbl_sync_prop
1744 ,'PRP'
1745 ,g_migration_tgt_folder_id
1746 ,'PROPERTIES - PROPERTIES AND RP ENTRIES'
1747 ,mm_insert_array1
1748 ,mm_objtype_array
1749 ,mm_tgtfldr_array
1750 ,mm_source_array1
1751 );
1752
1753 --The array cz_pb_mgr.mm_v_tbl_sync_prop_vals_num is a hash table, containing numeric default values,
1754 --hashed by target property_id, so we cannot use it directly in the following block. We need to construct a
1755 --new array that will be in synch with mm_insert_array1. Also, it should be global to be used inside the
1756 --insert_into_item_tables procedure.
1757
1758 FOR i IN 1..cz_pb_mgr.mm_insert_array1.COUNT LOOP
1759
1760 cz_pb_mgr.mm_insert_array2(i) := cz_pb_mgr.mm_v_tbl_sync_prop_vals_num(cz_pb_mgr.mm_insert_array1(i));
1761 END LOOP;
1762
1763 plsql_table_list(rec_count).col_name := 'property_id';
1764 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1765 rec_count:=rec_count+1;
1766
1767 plsql_table_list(rec_count).col_name := 'def_num_value';
1768 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1769
1770 insert_into_item_tables('cz_properties'
1771 ,'property_id'
1772 ,cz_pb_mgr.v_db_link
1773 ,plsql_table_list
1774 ,'cz_pb_mgr.mm_source_array1'
1775 ,cz_pb_mgr.mm_source_array1
1776 );
1777
1778 --insert rp entries as well
1779 plsql_table_list.DELETE;
1780 rec_count := 1;
1781 plsql_table_list(rec_count).col_name := 'object_id';
1782 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1783 rec_count := rec_count + 1;
1784 plsql_table_list(rec_count).col_name := 'object_type';
1785 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_objtype_array';
1786 rec_count := rec_count + 1;
1787 plsql_table_list(rec_count).col_name := 'enclosing_folder';
1788 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_tgtfldr_array';
1789 insert_into_rp_entries('cz_rp_entries'
1790 ,'object_id'
1791 ,'object_type'
1792 ,cz_pb_mgr.v_db_link
1793 ,plsql_table_list
1794 ,'cz_pb_mgr.mm_source_array1'
1795 ,'cz_pb_mgr.mm_objtype_array'
1796 ,cz_pb_mgr.mm_source_array1
1797 ,cz_pb_mgr.mm_objtype_array
1798 );
1799 ELSE
1800 plsql_table_list(rec_count).col_name := 'property_id';
1801 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_remote_prop_ref';
1802 insert_into_item_tables('cz_properties'
1803 ,'property_id'
1804 ,cz_pb_mgr.v_db_link
1805 ,plsql_table_list
1806 ,'cz_pb_mgr.v_remote_prop_ref'
1807 ,cz_pb_mgr.v_remote_prop_ref
1808 );
1809 END IF;
1810
1811 --ITEM TYPE PROPERTIES
1812 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1813 THEN
1814 cz_pb_mgr.mm_insert_array1.DELETE;
1815 cz_pb_mgr.mm_insert_array2.DELETE;
1816 cz_pb_mgr.mm_insert_array3.DELETE;
1817 cz_pb_mgr.mm_objtype_array.DELETE;
1818 cz_pb_mgr.mm_tgtfldr_array.DELETE;
1819 cz_pb_mgr.mm_source_array1.DELETE;
1820 cz_pb_mgr.mm_source_array2.DELETE;
1821 cz_pb_mgr.mm_source_array3.DELETE;
1822 mm_resolve_ids(cz_pb_mgr.v_item_prop_id_tbl
1823 ,cz_pb_mgr.mm_v_ht_sync_item_type_prop
1824 ,'ITEM TYPE PROPERTIES - PROP'
1825 ,cz_pb_mgr.mm_insert_array1
1826 ,cz_pb_mgr.mm_source_array1
1827 );
1828 mm_resolve_ids(cz_pb_mgr.v_item_prop_type_tbl
1829 ,cz_pb_mgr.mm_v_ht_sync_itmtype_for_prop
1830 ,'ITEM TYPE PROPERTIES - ITEM TYPE'
1831 ,cz_pb_mgr.mm_insert_array2
1832 ,cz_pb_mgr.mm_source_array2
1833 );
1834 mm_resolve_orig_refs(cz_pb_mgr.v_src_type_prop_orig_tbl
1835 ,cz_pb_mgr.mm_v_ht_item_typ_prop_orig_ref
1836 ,'ITEM TYPE PROPERTIES - ORIG SYS REF'
1837 ,cz_pb_mgr.mm_insert_array3
1838 ,cz_pb_mgr.mm_source_array3
1839 );
1840
1841 IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1842
1843 tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1844
1845 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1846 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of item type prop source array: ' || tmp_array_count);
1847
1848 tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1849
1850 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1851 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item type prop id): ' || tmp_array_count);
1852
1853 tmp_array_count := cz_pb_mgr.mm_insert_array2.COUNT;
1854
1855 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1856 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array2(item type): ' || tmp_array_count);
1857
1858 tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1859
1860 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1861 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (item type prop orig_sys_ref): ' || tmp_array_count);
1862
1863 mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM TYPE PROP SOURCE');
1864 mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM TYPE PROP INSERT');
1865 mm_dump_array(cz_pb_mgr.mm_insert_array2, 'ITEM TYPE PROP ITEM TYPE INSERT');
1866 mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM TYPE PROP ORIG_SYS_REF INSERT');
1867
1868 END IF;
1869
1870 plsql_table_list.DELETE;
1871 rec_count := 1;
1872 plsql_table_list(rec_count).col_name := 'property_id';
1873 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1874 rec_count := rec_count + 1;
1875 plsql_table_list(rec_count).col_name := 'item_type_id';
1876 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1877 rec_count := rec_count + 1;
1878 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1879 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1880 insert_item_tables('cz_item_type_properties'
1881 ,'property_id'
1882 ,'item_type_id'
1883 ,cz_pb_mgr.v_db_link
1884 ,plsql_table_list
1885 ,'cz_pb_mgr.mm_source_array1'
1886 ,'cz_pb_mgr.mm_source_array2'
1887 ,cz_pb_mgr.mm_source_array1
1888 ,cz_pb_mgr.mm_source_array2
1889 );
1890 --todo Bug9180063 Update the Non BOM item type properties, that have orig_sys_ref = 'NULL'
1891 -- there is no need to have any exception block as the calling procedure will take care of this.
1892 BEGIN
1893 IF (cz_pb_mgr.mm_insert_array2.COUNT > 0)
1894 THEN
1895 EXECUTE IMMEDIATE 'BEGIN'
1896 || ' '
1897 || 'FOR I IN cz_pb_mgr.mm_insert_array2.FIRST..cz_pb_mgr.mm_insert_array2.LAST'
1898 || ' '
1899 || 'LOOP'
1900 || ' '
1901 || 'UPDATE cz_item_type_properties'
1902 || cz_pb_mgr.v_db_link
1903 || ' t'
1904 || ' '
1905 || 'SET t.orig_sys_ref = NULL'
1906 || ' '
1907 || 'WHERE t.item_type_id = cz_pb_mgr.mm_insert_array2(i)'
1908 || ' '
1909 || 'AND t.orig_sys_ref = ''NULL'';'
1910 || ' '
1911 || 'END LOOP;'
1912 || ' '
1913 || 'END;';
1914 COMMIT;
1915 END IF;
1916 END;
1917 END IF;
1918
1919 --ITEM PROPERTY VALUES
1920 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1921 THEN
1922 cz_pb_mgr.mm_insert_array1.DELETE;
1923 cz_pb_mgr.mm_insert_array2.DELETE;
1924 cz_pb_mgr.mm_insert_array3.DELETE;
1925 cz_pb_mgr.mm_objtype_array.DELETE;
1926 cz_pb_mgr.mm_tgtfldr_array.DELETE;
1927 cz_pb_mgr.mm_source_array1.DELETE;
1928 cz_pb_mgr.mm_source_array2.DELETE;
1929 cz_pb_mgr.mm_source_array3.DELETE;
1930 mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_id_tbl
1931 ,cz_pb_mgr.mm_v_ht_sync_it_propval
1932 ,'IT PROP VAL- PROPERTIES'
1933 ,cz_pb_mgr.mm_insert_array1
1934 ,cz_pb_mgr.mm_source_array1
1935 );
1936 mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_item_tbl
1937 ,cz_pb_mgr.mm_v_ht_sync_it_propval_itm
1938 ,'IT PROP VALS - ITEMS'
1939 ,cz_pb_mgr.mm_insert_array2
1940 ,cz_pb_mgr.mm_source_array2
1941 );
1942 mm_resolve_orig_refs(cz_pb_mgr.v_src_prop_val_orig_tbl
1943 ,cz_pb_mgr.mm_v_ht_item_prop_val_orig_ref
1944 ,'IT PROP VAL - ORIG SYS REF'
1945 ,cz_pb_mgr.mm_insert_array3
1946 ,cz_pb_mgr.mm_source_array3
1947 );
1948
1949 IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
1950
1951 tmp_array_count := cz_pb_mgr.mm_source_array1.COUNT;
1952
1953 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1954 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of item prop val source array: ' || tmp_array_count);
1955
1956 tmp_array_count := cz_pb_mgr.mm_insert_array1.COUNT;
1957
1958 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1959 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array1 (item prop val prop id): ' || tmp_array_count);
1960
1961 tmp_array_count := cz_pb_mgr.mm_insert_array2.COUNT;
1962
1963 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1964 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array2(item prop val item id): ' || tmp_array_count);
1965
1966 tmp_array_count := cz_pb_mgr.mm_insert_array3.COUNT;
1967
1968 INSERT INTO cz_db_logs (logtime, loguser, message) VALUES
1969 (Sysdate, 'CZ_PB_MGR.INSERT_ITEM_SCHEMA', 'Length of insert array3 (item prop val orig_sys_ref): ' || tmp_array_count);
1970
1971 mm_dump_array(cz_pb_mgr.mm_source_array1, 'ITEM PROP VAL SOURCE');
1972 mm_dump_array(cz_pb_mgr.mm_insert_array1, 'ITEM PROP VAL INSERT');
1973 mm_dump_array(cz_pb_mgr.mm_insert_array2, 'ITEM PROP VAL ITEM ID INSERT');
1974 mm_dump_osr_array(cz_pb_mgr.mm_insert_array3, 'ITEM PROP VAL ORIG_SYS_REF INSERT');
1975
1976 END IF;
1977
1978 plsql_table_list.DELETE;
1979 rec_count := 1;
1980 plsql_table_list(rec_count).col_name := 'property_id';
1981 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1982 rec_count := rec_count + 1;
1983 plsql_table_list(rec_count).col_name := 'item_id';
1984 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1985 rec_count := rec_count + 1;
1986 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1987 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1988 insert_item_tables('cz_item_property_values'
1989 ,'property_id'
1990 ,'item_id'
1991 ,cz_pb_mgr.v_db_link
1992 ,plsql_table_list
1993 ,'cz_pb_mgr.mm_source_array1'
1994 ,'cz_pb_mgr.mm_source_array2'
1995 ,cz_pb_mgr.mm_source_array1
1996 ,cz_pb_mgr.mm_source_array2
1997 );
1998 --todo Bug9180063 Update the Non BOM item property values, that have orig_sys_ref = 'NULL'
1999 BEGIN
2000 IF (cz_pb_mgr.mm_insert_array2.COUNT > 0)
2001 THEN
2002 EXECUTE IMMEDIATE 'BEGIN'
2003 || ' '
2004 || 'FOR I IN cz_pb_mgr.mm_insert_array2.FIRST..cz_pb_mgr.mm_insert_array2.LAST'
2005 || ' '
2006 || 'LOOP'
2007 || ' '
2008 || 'UPDATE cz_item_property_values'
2009 || cz_pb_mgr.v_db_link
2010 || ' t'
2011 || ' '
2012 || 'SET t.orig_sys_ref = NULL'
2013 || ' '
2014 || 'WHERE t.item_id = cz_pb_mgr.mm_insert_array2(i)'
2015 || ' '
2016 || 'AND t.orig_sys_ref = ''NULL'';'
2017 || ' '
2018 || 'END LOOP;'
2019 || ' '
2020 || 'END;';
2021 COMMIT;
2022 END IF;
2023 END;
2024 END IF;
2025 END insert_item_schema;
2026 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2027 PROCEDURE insert_into_rp_entries(
2028 table_name IN VARCHAR2
2029 ,primary_key1 IN VARCHAR2
2030 ,primary_key2 IN VARCHAR2
2031 ,db_link IN VARCHAR2
2032 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2033 ,plsql_table_name1 IN VARCHAR2
2034 ,plsql_table_name2 IN VARCHAR2
2035 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2036 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
2037 )
2038 AS
2039 v_cursor NUMBER;
2040 v_numrows NUMBER;
2041 v_insertstring VARCHAR2(10000);
2042 current_column VARCHAR2(128);
2043 v_db_link VARCHAR2(128);
2044 v_last NUMBER;
2045
2046 CURSOR col_name_cur(par_table_name VARCHAR2)
2047 IS
2048 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2049 --the logical column for a logical object than a physical columns
2050 SELECT col.column_name
2051 FROM user_synonyms syn, all_tab_columns col
2052 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2053 AND col.owner = syn.table_owner
2054 AND col.table_name = syn.table_name;
2055
2056
2057 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
2058
2059 col_list col_name_table;
2060 i BINARY_INTEGER := 1;
2061 match_found BOOLEAN;
2062 BEGIN
2063 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2064 THEN
2065 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2066 cz_pb_mgr.v_insert_table_name := table_name;
2067
2068 BEGIN
2069 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP ';
2070 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2071
2072 OPEN col_name_cur(table_name);
2073
2074 LOOP
2075 FETCH col_name_cur
2076 INTO current_column;
2077
2078 EXIT WHEN col_name_cur%NOTFOUND;
2079 col_list(i) := LTRIM(RTRIM(current_column));
2080 i := i + 1;
2081 v_insertstring := v_insertstring || current_column || ',';
2082 END LOOP;
2083
2084 CLOSE col_name_cur;
2085
2086 v_insertstring := RTRIM(v_insertstring, ',');
2087 v_insertstring := v_insertstring || ')';
2088 v_insertstring := v_insertstring || ' select ';
2089
2090 IF (col_list.COUNT > 0)
2091 THEN
2092 FOR j IN col_list.FIRST .. col_list.LAST
2093 LOOP
2094 match_found := FALSE;
2095
2096 IF (plsql_table_list.COUNT > 0)
2097 THEN
2098 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2099 LOOP
2100 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2101 THEN
2102 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2103 match_found := TRUE;
2104 EXIT;
2105 END IF;
2106 END LOOP;
2107 END IF;
2108
2109 IF (NOT match_found)
2110 THEN
2111 v_insertstring := v_insertstring || col_list(j) || ',';
2112 END IF;
2113 END LOOP;
2114 END IF;
2115
2116 v_insertstring := RTRIM(v_insertstring, ',');
2117 v_insertstring :=
2118 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2119 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2120 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2121 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; ';
2122 v_insertstring :=
2123 v_insertstring
2124 || ' EXCEPTION WHEN OTHERS THEN '
2125 || ' '
2126 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2127 || ' '
2128 || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2129 || ' '
2130 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2131
2132 EXECUTE IMMEDIATE v_insertstring;
2133
2134 COMMIT;
2135 EXCEPTION
2136 WHEN OTHERS
2137 THEN
2138 ROLLBACK;
2139 RAISE;
2140 END;
2141 END IF;
2142
2143 COMMIT;
2144 END;
2145
2146 ----------------------------------------------------
2147
2148 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2149 PROCEDURE insert_into_table(
2150 table_name IN VARCHAR2
2151 ,primary_key1 IN VARCHAR2
2152 ,primary_key2 IN VARCHAR2
2153 ,primary_key3 IN VARCHAR2
2154 ,db_link IN VARCHAR2
2155 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2156 ,plsql_table_name1 IN VARCHAR2
2157 ,plsql_table_name2 IN VARCHAR2
2158 ,plsql_table_name3 IN VARCHAR2
2159 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2160 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2161 ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.varchar_type_tbl
2162 )
2163 AS
2164 v_cursor NUMBER;
2165 v_numrows NUMBER;
2166 v_insertstring VARCHAR2(10000);
2167 current_column VARCHAR2(128);
2168 v_db_link VARCHAR2(128);
2169 v_last NUMBER;
2170
2171 CURSOR col_name_cur(par_table_name VARCHAR2)
2172 IS
2173 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2174 --the logical column for a logical object than a physical columns
2175 SELECT col.column_name
2176 FROM user_synonyms syn, all_tab_columns col
2177 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2178 AND col.owner = syn.table_owner
2179 AND col.table_name = syn.table_name;
2180
2181
2182 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
2183
2184 col_list col_name_table;
2185 i BINARY_INTEGER := 1;
2186 match_found BOOLEAN;
2187 BEGIN
2188 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2189 THEN
2190 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2191 cz_pb_mgr.v_insert_table_name := table_name;
2192
2193 BEGIN
2194 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2195 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2196
2197 OPEN col_name_cur(table_name);
2198
2199 LOOP
2200 FETCH col_name_cur
2201 INTO current_column;
2202
2203 EXIT WHEN col_name_cur%NOTFOUND;
2204 col_list(i) := LTRIM(RTRIM(current_column));
2205 i := i + 1;
2206 v_insertstring := v_insertstring || current_column || ',';
2207 END LOOP;
2208
2209 CLOSE col_name_cur;
2210
2211 v_insertstring := RTRIM(v_insertstring, ',');
2212 v_insertstring := v_insertstring || ')';
2213 v_insertstring := v_insertstring || ' select ';
2214
2215 IF (col_list.COUNT > 0)
2216 THEN
2217 FOR j IN col_list.FIRST .. col_list.LAST
2218 LOOP
2219 match_found := FALSE;
2220
2221 IF (plsql_table_list.COUNT > 0)
2222 THEN
2223 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2224 LOOP
2225 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2226 THEN
2227 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2228 match_found := TRUE;
2229 EXIT;
2230 END IF;
2231 END LOOP;
2232 END IF;
2233
2234 IF (NOT match_found)
2235 THEN
2236 v_insertstring := v_insertstring || col_list(j) || ',';
2237 END IF;
2238 END LOOP;
2239 END IF;
2240
2241 v_insertstring := RTRIM(v_insertstring, ',');
2242 v_insertstring :=
2243 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2244 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2245 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
2246 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2247 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2248 v_insertstring :=
2249 v_insertstring
2250 || ' EXCEPTION WHEN OTHERS THEN'
2251 || ' '
2252 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2253 || ' '
2254 || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2255 || ' '
2256 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2257
2258 EXECUTE IMMEDIATE v_insertstring;
2259
2260 COMMIT;
2261 EXCEPTION
2262 WHEN OTHERS
2263 THEN
2264 ROLLBACK;
2265 RAISE;
2266 END;
2267 END IF;
2268
2269 COMMIT;
2270 END;
2271
2272 -------------------------------------------------------------------------
2273 PROCEDURE insert_into_table(
2274 table_name IN VARCHAR2
2275 ,primary_key1 IN VARCHAR2
2276 ,primary_key2 IN VARCHAR2
2277 ,primary_key3 IN VARCHAR2
2278 ,db_link IN VARCHAR2
2279 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2280 ,plsql_table_name1 IN VARCHAR2
2281 ,plsql_table_name2 IN VARCHAR2
2282 ,plsql_table_name3 IN VARCHAR2
2283 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2284 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2285 ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.t_ref
2286 )
2287 AS
2288 v_cursor NUMBER;
2289 v_numrows NUMBER;
2290 v_insertstring VARCHAR2(10000);
2291 current_column VARCHAR2(128);
2292 v_db_link VARCHAR2(128);
2293 v_last NUMBER;
2294
2295 CURSOR col_name_cur(par_table_name VARCHAR2)
2296 IS
2297 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2298 --the logical column for a logical object than a physical columns
2299 SELECT col.column_name
2300 FROM user_synonyms syn, all_tab_columns col
2301 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2302 AND col.owner = syn.table_owner
2303 AND col.table_name = syn.table_name;
2304
2305
2306 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
2307
2308 col_list col_name_table;
2309 i BINARY_INTEGER := 1;
2310 match_found BOOLEAN;
2311 BEGIN
2312 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2313 THEN
2314 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2315 cz_pb_mgr.v_insert_table_name := table_name;
2316
2317 BEGIN
2318 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2319 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2320
2321 OPEN col_name_cur(table_name);
2322
2323 LOOP
2324 FETCH col_name_cur
2325 INTO current_column;
2326
2327 EXIT WHEN col_name_cur%NOTFOUND;
2328 col_list(i) := LTRIM(RTRIM(current_column));
2329 i := i + 1;
2330 v_insertstring := v_insertstring || current_column || ',';
2331 END LOOP;
2332
2333 CLOSE col_name_cur;
2334
2335 v_insertstring := RTRIM(v_insertstring, ',');
2336 v_insertstring := v_insertstring || ')';
2337 v_insertstring := v_insertstring || ' select ';
2338
2339 IF (col_list.COUNT > 0)
2340 THEN
2341 FOR j IN col_list.FIRST .. col_list.LAST
2342 LOOP
2343 match_found := FALSE;
2344
2345 IF (plsql_table_list.COUNT > 0)
2346 THEN
2347 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2348 LOOP
2349 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2350 THEN
2351 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2352 match_found := TRUE;
2353 EXIT;
2354 END IF;
2355 END LOOP;
2356 END IF;
2357
2358 IF (NOT match_found)
2359 THEN
2360 v_insertstring := v_insertstring || col_list(j) || ',';
2361 END IF;
2362 END LOOP;
2363 END IF;
2364
2365 v_insertstring := RTRIM(v_insertstring, ',');
2366 v_insertstring :=
2367 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2368 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2369 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
2370 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2371 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2372 v_insertstring :=
2373 v_insertstring
2374 || ' EXCEPTION WHEN OTHERS THEN'
2375 || ' '
2376 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2377 || ' '
2378 || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2379 || ' '
2380 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2381
2382 EXECUTE IMMEDIATE v_insertstring;
2383
2384 COMMIT;
2385 EXCEPTION
2386 WHEN OTHERS
2387 THEN
2388 cz_pb_mgr.v_err_message := 'Insert into cz ui page refs: ' || SQLERRM;
2389 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZUIPAGEREFS', SQLCODE);
2390 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2391 RAISE;
2392 END;
2393 END IF;
2394
2395 COMMIT;
2396 END;
2397
2398 ------------------------------------------------------------
2399 PROCEDURE insert_into_table(
2400 table_name IN VARCHAR2
2401 ,primary_key1 IN VARCHAR2
2402 ,primary_key2 IN VARCHAR2
2403 ,db_link IN VARCHAR2
2404 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2405 ,plsql_table_name1 IN VARCHAR2
2406 ,plsql_table_name2 IN VARCHAR2
2407 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2408 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.objtype
2409 )
2410 AS
2411 v_cursor NUMBER;
2412 v_numrows NUMBER;
2413 v_insertstring VARCHAR2(10000);
2414 current_column VARCHAR2(128);
2415 v_db_link VARCHAR2(128);
2416 v_last NUMBER;
2417
2418 CURSOR col_name_cur(par_table_name VARCHAR2)
2419 IS
2420 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2421 --the logical column for a logical object than a physical columns
2422 SELECT col.column_name
2423 FROM user_synonyms syn, all_tab_columns col
2424 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2425 AND col.owner = syn.table_owner
2426 AND col.table_name = syn.table_name;
2427
2428
2429 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
2430
2431 col_list col_name_table;
2432 i BINARY_INTEGER := 1;
2433 match_found BOOLEAN;
2434 BEGIN
2435 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2436 THEN
2437 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2438 cz_pb_mgr.v_insert_table_name := table_name;
2439
2440 BEGIN
2441 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2442 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2443
2444 OPEN col_name_cur(table_name);
2445
2446 LOOP
2447 FETCH col_name_cur
2448 INTO current_column;
2449
2450 EXIT WHEN col_name_cur%NOTFOUND;
2451 col_list(i) := LTRIM(RTRIM(current_column));
2452 i := i + 1;
2453 v_insertstring := v_insertstring || current_column || ',';
2454 END LOOP;
2455
2456 CLOSE col_name_cur;
2457
2458 v_insertstring := RTRIM(v_insertstring, ',');
2459 v_insertstring := v_insertstring || ')';
2460 v_insertstring := v_insertstring || ' select ';
2461
2462 IF (col_list.COUNT > 0)
2463 THEN
2464 FOR j IN col_list.FIRST .. col_list.LAST
2465 LOOP
2466 match_found := FALSE;
2467
2468 IF (plsql_table_list.COUNT > 0)
2469 THEN
2470 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2471 LOOP
2472 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2473 THEN
2474 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2475 match_found := TRUE;
2476 EXIT;
2477 END IF;
2478 END LOOP;
2479 END IF;
2480
2481 IF (NOT match_found)
2482 THEN
2483 v_insertstring := v_insertstring || col_list(j) || ',';
2484 END IF;
2485 END LOOP;
2486 END IF;
2487
2488 v_insertstring := RTRIM(v_insertstring, ',');
2489 v_insertstring :=
2490 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2491 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2492 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2493 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2494 v_insertstring :=
2495 v_insertstring
2496 || ' EXCEPTION WHEN OTHERS THEN '
2497 || ' '
2498 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2499 || ' '
2500 || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2501 || ' '
2502 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2503
2504 EXECUTE IMMEDIATE v_insertstring;
2505
2506 COMMIT;
2507 EXCEPTION
2508 WHEN OTHERS
2509 THEN
2510 ROLLBACK;
2511 RAISE;
2512 END;
2513 END IF;
2514
2515 COMMIT;
2516 END;
2517
2518 ---------------------------------------------------------------------------------
2519 PROCEDURE insert_into_table(
2520 table_name IN VARCHAR2
2521 ,primary_key1 IN VARCHAR2
2522 ,primary_key2 IN VARCHAR2
2523 ,db_link IN VARCHAR2
2524 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2525 ,plsql_table_name1 IN VARCHAR2
2526 ,plsql_table_name2 IN VARCHAR2
2527 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2528 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type
2529 )
2530 AS
2531 v_cursor NUMBER;
2532 v_numrows NUMBER;
2533 v_insertstring VARCHAR2(10000);
2534 current_column VARCHAR2(128);
2535 v_db_link VARCHAR2(128);
2536 v_last NUMBER;
2537
2538 CURSOR col_name_cur(par_table_name VARCHAR2)
2539 IS
2540 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2541 --the logical column for a logical object than a physical columns
2542 SELECT col.column_name
2543 FROM user_synonyms syn, all_tab_columns col
2544 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2545 AND col.owner = syn.table_owner
2546 AND col.table_name = syn.table_name;
2547
2548
2549 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
2550
2551 col_list col_name_table;
2552 i BINARY_INTEGER := 1;
2553 match_found BOOLEAN;
2554 BEGIN
2555 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2556 THEN
2557 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2558 cz_pb_mgr.v_insert_table_name := table_name;
2559
2560 BEGIN
2561 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2562 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2563
2564 OPEN col_name_cur(table_name);
2565
2566 LOOP
2567 FETCH col_name_cur
2568 INTO current_column;
2569
2570 EXIT WHEN col_name_cur%NOTFOUND;
2571 col_list(i) := LTRIM(RTRIM(current_column));
2572 i := i + 1;
2573 v_insertstring := v_insertstring || current_column || ',';
2574 END LOOP;
2575
2576 CLOSE col_name_cur;
2577
2578 v_insertstring := RTRIM(v_insertstring, ',');
2579 v_insertstring := v_insertstring || ')';
2580 v_insertstring := v_insertstring || ' select ';
2581
2582 IF (col_list.COUNT > 0)
2583 THEN
2584 FOR j IN col_list.FIRST .. col_list.LAST
2585 LOOP
2586 match_found := FALSE;
2587
2588 IF (plsql_table_list.COUNT > 0)
2589 THEN
2590 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2591 LOOP
2592 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2593 THEN
2594 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2595 match_found := TRUE;
2596 EXIT;
2597 END IF;
2598 END LOOP;
2599 END IF;
2600
2601 IF (NOT match_found)
2602 THEN
2603 v_insertstring := v_insertstring || col_list(j) || ',';
2604 END IF;
2605 END LOOP;
2606 END IF;
2607
2608 v_insertstring := RTRIM(v_insertstring, ',');
2609 v_insertstring :=
2610 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2611 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2612 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2613 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2614 v_insertstring :=
2615 v_insertstring
2616 || ' EXCEPTION WHEN OTHERS THEN '
2617 || ' '
2618 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2619 || ' '
2620 || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2621 || ' '
2622 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2623
2624 EXECUTE IMMEDIATE v_insertstring;
2625
2626 COMMIT;
2627 EXCEPTION
2628 WHEN OTHERS
2629 THEN
2630 ROLLBACK;
2631 RAISE;
2632 END;
2633 END IF;
2634
2635 COMMIT;
2636 END;
2637
2638 ----------------------------------------------------
2639 PROCEDURE insert_into_table(
2640 table_name IN VARCHAR2
2641 ,primary_key1 IN VARCHAR2
2642 ,primary_key2 IN VARCHAR2
2643 ,db_link IN VARCHAR2
2644 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2645 ,plsql_table_name1 IN VARCHAR2
2646 ,plsql_table_name2 IN VARCHAR2
2647 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2648 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2649 )
2650 AS
2651 v_cursor NUMBER;
2652 v_numrows NUMBER;
2653 v_insertstring VARCHAR2(10000);
2654 current_column VARCHAR2(128);
2655 v_db_link VARCHAR2(128);
2656 v_last NUMBER;
2657
2658 CURSOR col_name_cur(par_table_name VARCHAR2)
2659 IS
2660 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2661 --the logical column for a logical object than a physical columns
2662 SELECT col.column_name
2663 FROM user_synonyms syn, all_tab_columns col
2664 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2665 AND col.owner = syn.table_owner
2666 AND col.table_name = syn.table_name;
2667
2668
2669 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
2670
2671 col_list col_name_table;
2672 i BINARY_INTEGER := 1;
2673 match_found BOOLEAN;
2674 BEGIN
2675 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2676 THEN
2677 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2678 cz_pb_mgr.v_insert_table_name := table_name;
2679
2680 BEGIN
2681 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2682 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2683
2684 OPEN col_name_cur(table_name);
2685
2686 LOOP
2687 FETCH col_name_cur
2688 INTO current_column;
2689
2690 EXIT WHEN col_name_cur%NOTFOUND;
2691 col_list(i) := LTRIM(RTRIM(current_column));
2692 i := i + 1;
2693 v_insertstring := v_insertstring || current_column || ',';
2694 END LOOP;
2695
2696 CLOSE col_name_cur;
2697
2698 v_insertstring := RTRIM(v_insertstring, ',');
2699 v_insertstring := v_insertstring || ')';
2700 v_insertstring := v_insertstring || ' select ';
2701
2702 IF (col_list.COUNT > 0)
2703 THEN
2704 FOR j IN col_list.FIRST .. col_list.LAST
2705 LOOP
2706 match_found := FALSE;
2707
2708 IF (plsql_table_list.COUNT > 0)
2709 THEN
2710 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2711 LOOP
2712 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2713 THEN
2714 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2715 match_found := TRUE;
2716 EXIT;
2717 END IF;
2718 END LOOP;
2719 END IF;
2720
2721 IF (NOT match_found)
2722 THEN
2723 v_insertstring := v_insertstring || col_list(j) || ',';
2724 END IF;
2725 END LOOP;
2726 END IF;
2727
2728 v_insertstring := RTRIM(v_insertstring, ',');
2729 v_insertstring :=
2730 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2731 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2732 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2733 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2734 v_insertstring :=
2735 v_insertstring
2736 || ' EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; WHEN OTHERS THEN'
2737 || ' '
2738 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2739 || ' '
2740 || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2741 || ' '
2742 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2743
2744 EXECUTE IMMEDIATE v_insertstring;
2745
2746 COMMIT;
2747 EXCEPTION
2748 WHEN OTHERS
2749 THEN
2750 ROLLBACK;
2751 cz_pb_mgr.v_err_message := 'Insert into ' || table_name || ': ' || SQLERRM;
2752 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, table_name, SQLCODE);
2753 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2754 RAISE;
2755 END;
2756 END IF;
2757
2758 COMMIT;
2759 END;
2760
2761 -----------------------------------------------------
2762 -------procedure that inserts the records into target db
2763 -------of the table referred by the table_name
2764 PROCEDURE insert_into_table(
2765 table_name IN VARCHAR2
2766 ,primary_key IN VARCHAR2
2767 ,db_link IN VARCHAR2
2768 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2769 ,plsql_table_name IN VARCHAR2
2770 ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
2771 )
2772 AS
2773 v_cursor NUMBER;
2774 v_numrows NUMBER;
2775 v_insertstring VARCHAR2(10000);
2776 current_column VARCHAR2(128);
2777 v_db_link VARCHAR2(128);
2778 v_last NUMBER;
2779
2780 CURSOR col_name_cur(par_table_name VARCHAR2)
2781 IS
2782 --Bug15915777: SKM: Chnnages based on 12.2.1 EV (Online patching). Should access
2783 --the logical column for a logical object than a physical columns
2784 SELECT col.column_name
2785 FROM user_synonyms syn, all_tab_columns col
2786 WHERE UPPER(syn.synonym_name) = UPPER(LTRIM(RTRIM(par_table_name)))
2787 AND col.owner = syn.table_owner
2788 AND col.table_name = syn.table_name;
2789
2790
2791 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE INDEX BY BINARY_INTEGER;
2792
2793 col_list col_name_table;
2794 i BINARY_INTEGER := 1;
2795 match_found BOOLEAN;
2796 BEGIN
2797
2798 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
2799 THEN
2800 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2801 cz_pb_mgr.v_insert_table_name := table_name;
2802
2803 BEGIN
2804 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || ' LOOP BEGIN ';
2805 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2806
2807 OPEN col_name_cur(table_name);
2808
2809 LOOP
2810 FETCH col_name_cur
2811 INTO current_column;
2812
2813 EXIT WHEN col_name_cur%NOTFOUND;
2814 col_list(i) := LTRIM(RTRIM(current_column));
2815 i := i + 1;
2816 v_insertstring := v_insertstring || current_column || ',';
2817 END LOOP;
2818
2819 CLOSE col_name_cur;
2820
2821 v_insertstring := RTRIM(v_insertstring, ',');
2822 v_insertstring := v_insertstring || ')';
2823 v_insertstring := v_insertstring || ' select ';
2824
2825 IF (col_list.COUNT > 0)
2826 THEN
2827 FOR j IN col_list.FIRST .. col_list.LAST
2828 LOOP
2829 match_found := FALSE;
2830
2831 IF (plsql_table_list.COUNT > 0)
2832 THEN
2833 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2834 LOOP
2835 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2836 THEN
2837 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2838 match_found := TRUE;
2839 EXIT;
2840 END IF;
2841 END LOOP;
2842 END IF;
2843
2844 IF (NOT match_found)
2845 THEN
2846 v_insertstring := v_insertstring || col_list(j) || ',';
2847 END IF;
2848 END LOOP;
2849 END IF;
2850
2851 v_insertstring := RTRIM(v_insertstring, ',');
2852 v_insertstring := v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
2853 --SKM -- Added check for Single Publication Langiage
2854 IF (vPubSingleLang IS NOT NULL AND table_name = 'cz_localized_texts') THEN
2855 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' AND LANGUAGE = '''||vPubSingleLang||''' ';
2856 ELSE
2857 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2858 END IF;
2859 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; END; END LOOP; COMMIT; ';
2860 v_insertstring :=
2861 v_insertstring
2862 || ' EXCEPTION WHEN OTHERS THEN '
2863 || ' '
2864 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2865 || ' '
2866 || 'ROLLBACK; insert into cz_db_logs (message, message_id,run_id,caller) values(cz_pb_mgr.v_err_message, cz_pb_mgr.v_publication_id, cz_pb_mgr.v_pb_run_id, ''INSERTINTOTABLE'');'
2867 || ' '
2868 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2869
2870 EXECUTE IMMEDIATE v_insertstring;
2871 COMMIT;
2872 EXCEPTION
2873 WHEN OTHERS
2874 THEN
2875 ROLLBACK;
2876 RAISE;
2877 END;
2878 END IF;
2879 COMMIT;
2880 END;
2881
2882 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2883 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2884 -----procedure that insert intl texts into cz_localized_texts
2885 -- set persistent_intl_text_id with new intl_text_id if texts are from templates
2886 -- and if the session is model migration. Note local model migration (via model
2887 -- conversion) does not copy any template
2888 PROCEDURE insert_intl_texts(p_intl_text_id_ref IN cz_pb_mgr.t_ref, p_intl_text IN VARCHAR2,
2889 p_from_template IN BOOLEAN DEFAULT FALSE)
2890 IS
2891 plsql_table_list cz_pb_mgr.col_plsql_table_list;
2892 v_cz_intl_text_new_tbl cz_pb_mgr.t_ref;
2893 v_cz_intl_text_old_tbl cz_pb_mgr.t_ref;
2894 l_ui_def_id_tbl cz_pb_mgr.t_ref;
2895 l_model_id_tbl cz_pb_mgr.t_ref;
2896 rec_count PLS_INTEGER := 0;
2897 BEGIN
2898 IF (p_intl_text_id_ref.COUNT > 0)
2899 THEN
2900 cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
2901 cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
2902 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
2903 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
2904
2905 IF (p_intl_text = 'prop num value of cz prop vals')THEN
2906
2907 FOR c IN p_intl_text_id_ref.FIRST .. p_intl_text_id_ref.LAST -- cz_pb_mgr.v_prop_vals_data_num_ref.LAST
2908 LOOP
2909 IF (cz_pb_mgr.v_prop_vals_data_typ_ref(c) = 8 AND
2910 (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
2911 cz_pb_mgr.v_prop_vals_valuesource_ref(c) = 'PsValue'))
2912 THEN
2913 v_cz_intl_text_new_tbl.DELETE;
2914 v_cz_intl_text_old_tbl.DELETE;
2915 l_ui_def_id_tbl.DELETE;
2916 l_model_id_tbl.DELETE;
2917
2918 BEGIN
2919 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
2920 , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
2921 ,cz_pb_mgr.v_oraclesequenceincr
2922 )
2923 ,intl_text_id, DECODE(ui_def_id, -1, NULL, ui_def_id), NVL(model_id, -1)
2924 BULK COLLECT INTO v_cz_intl_text_new_tbl
2925 ,v_cz_intl_text_old_tbl, l_ui_def_id_tbl, l_model_id_tbl
2926 FROM cz_intl_texts
2927 WHERE intl_text_id = p_intl_text_id_ref(c) AND deleted_flag = '0' AND NVL(seeded_flag, '0') = '0';
2928 EXCEPTION
2929 WHEN NO_DATA_FOUND
2930 THEN
2931 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
2932 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2933 WHEN OTHERS
2934 THEN
2935 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_intl_texts', 'SQLERRM', SQLERRM);
2936 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2937 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2938 END;
2939
2940 rec_count := cz_pb_mgr.v_cz_intl_text_new_ref.COUNT;
2941
2942 IF (v_cz_intl_text_new_tbl.COUNT > 0)
2943 THEN
2944 FOR k IN v_cz_intl_text_new_tbl.FIRST .. v_cz_intl_text_new_tbl.LAST
2945 LOOP
2946
2947 --Bug #5441580. This is the case of translatable properties, the original values will
2948 --have model_id = 0, we need to redefine them to the target model's model_id.
2949
2950 --Bug 11685105. Rework to handle the way devl_project_id is cached so that
2951 --the cz_intl_text table can be correctly updated if the item gets repeated
2952 --across different referenced models and have a Translatable Text Property
2953 IF (cz_pb_mgr.v_psnode_propval_tbl(c).devl_project_id IS NOT NULL) THEN
2954 l_model_id_tbl(k) := cz_pb_mgr.v_psnode_propval_tbl(c).devl_project_id;
2955 ELSE
2956 l_model_id_tbl(k) := cz_pb_mgr.h_devl_prj_by_intl_text(v_cz_intl_text_old_tbl(k));
2957 END IF;
2958
2959
2960 IF (v_cz_intl_text_old_tbl(k) IS NOT NULL)
2961 THEN
2962 rec_count := rec_count + 1;
2963 cz_pb_mgr.v_cz_intl_text_new_ref(rec_count) := v_cz_intl_text_new_tbl(k);
2964 cz_pb_mgr.v_cz_intl_text_old_ref(rec_count) := v_cz_intl_text_old_tbl(k);
2965 cz_pb_mgr.v_intl_text_model_tbl(rec_count) := l_model_id_tbl(k);
2966 cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_ui_def_id_tbl(k);
2967 cz_pb_mgr.v_cz_intl_text_idx_ref(v_cz_intl_text_old_tbl(k)):=v_cz_intl_text_new_tbl(k);
2968 cz_pb_mgr.v_psnode_propval_tbl(c).new_property_num_value := v_cz_intl_text_new_tbl(k); -- Bug 11685105 update rec with new intl text id
2969 END IF;
2970 END LOOP;
2971 END IF;
2972 END IF;
2973 END LOOP;
2974 ELSE
2975 FOR c IN p_intl_text_id_ref.FIRST .. p_intl_text_id_ref.LAST
2976 LOOP
2977 --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
2978 --log_timing_message('SPITRE rework insert_intl_texts - p_intl_text_id_ref(c) := ' || p_intl_text_id_ref(c));
2979 --END IF;
2980 IF (p_intl_text_id_ref(c) IS NOT NULL)
2981 THEN
2982 v_cz_intl_text_new_tbl.DELETE;
2983 v_cz_intl_text_old_tbl.DELETE;
2984 l_ui_def_id_tbl.DELETE;
2985 l_model_id_tbl.DELETE;
2986
2987 BEGIN
2988 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
2989 , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
2990 ,cz_pb_mgr.v_oraclesequenceincr
2991 )
2992 ,intl_text_id, DECODE(ui_def_id, -1, NULL, ui_def_id), NVL(model_id, -1)
2993 BULK COLLECT INTO v_cz_intl_text_new_tbl
2994 ,v_cz_intl_text_old_tbl, l_ui_def_id_tbl, l_model_id_tbl
2995 FROM cz_intl_texts
2996 WHERE intl_text_id = p_intl_text_id_ref(c) AND deleted_flag = '0' AND NVL(seeded_flag, '0') = '0';
2997 EXCEPTION
2998 WHEN NO_DATA_FOUND
2999 THEN
3000 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
3001 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
3002 WHEN OTHERS
3003 THEN
3004 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_intl_texts', 'SQLERRM', SQLERRM);
3005 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
3006 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3007 END;
3008
3009 rec_count := cz_pb_mgr.v_cz_intl_text_new_ref.COUNT;
3010
3011 IF (v_cz_intl_text_new_tbl.COUNT > 0)
3012 THEN
3013 FOR k IN v_cz_intl_text_new_tbl.FIRST .. v_cz_intl_text_new_tbl.LAST
3014 LOOP
3015
3016 IF (v_cz_intl_text_old_tbl(k) IS NOT NULL)
3017 THEN
3018 rec_count := rec_count + 1;
3019 cz_pb_mgr.v_cz_intl_text_new_ref(rec_count) := v_cz_intl_text_new_tbl(k);
3020 cz_pb_mgr.v_cz_intl_text_old_ref(rec_count) := v_cz_intl_text_old_tbl(k);
3021 cz_pb_mgr.v_intl_text_model_tbl(rec_count) := l_model_id_tbl(k);
3022 cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_ui_def_id_tbl(k);
3023 cz_pb_mgr.v_cz_intl_text_idx_ref(v_cz_intl_text_old_tbl(k)):=v_cz_intl_text_new_tbl(k);
3024 END IF;
3025 END LOOP;
3026 END IF;
3027 END IF;
3028 END LOOP;
3029 --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3030 -- log_timing_message('SPITRE rework calling resolve_ids for - model id of cz intl texts');
3031 --END IF;
3032 resolve_ids(cz_pb_mgr.v_intl_text_model_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'model id of cz intl texts');
3033 END IF;
3034
3035 --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3036 -- log_timing_message('SPITRE rework calling resolve_ids for - ui def id of cz intl texts');
3037 --END IF;
3038 resolve_ids(cz_pb_mgr.v_intl_text_ui_tbl, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def id of cz intl texts');
3039
3040 IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
3041 THEN
3042 --------populate plsql_table_list for intl texts
3043 plsql_table_list.DELETE;
3044 rec_count := 1;
3045 plsql_table_list(rec_count).col_name := 'intl_text_id';
3046 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_intl_text_new_ref';
3047 rec_count := rec_count + 1;
3048
3049 IF (p_from_template AND CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3050 plsql_table_list(rec_count).col_name := 'persistent_intl_text_id';
3051 plsql_table_list(rec_count).table_name := 'CZ_PB_MGR.v_cz_intl_text_new_ref';
3052 rec_count := rec_count + 1;
3053 END IF;
3054
3055 plsql_table_list(rec_count).col_name := 'model_id';
3056 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_model_tbl';
3057 rec_count := rec_count + 1;
3058 plsql_table_list(rec_count).col_name := 'ui_def_id';
3059 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_ui_tbl';
3060 -----------insert into cz_localized_texts
3061 insert_into_table('cz_localized_texts'
3062 ,'intl_text_id'
3063 ,cz_pb_mgr.v_db_link
3064 ,plsql_table_list
3065 ,'cz_pb_mgr.v_cz_intl_text_old_ref'
3066 ,cz_pb_mgr.v_cz_intl_text_old_ref
3067 );
3068 --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3069 -- log_timing_message('SPITRE rework After calling insert_into_table');
3070 --END IF;
3071 IF (CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3072 update_mm_localized_texts;
3073 ELSE
3074 update_localized_texts;
3075 --IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
3076 -- log_timing_message('SPITRE rework After calling update_localized_texts');
3077 --END IF;
3078 END IF;
3079 cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
3080 cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
3081 v_cz_intl_text_new_tbl.DELETE;
3082 v_cz_intl_text_old_tbl.DELETE;
3083 END IF;
3084 END IF;
3085 EXCEPTION
3086 WHEN OTHERS
3087 THEN
3088 cz_pb_mgr.v_err_message := 'Insert into intl texts for: ' || p_intl_text || ' : ' || SQLERRM;
3089 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLTEXTS', SQLCODE);
3090 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3091 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
3092 RAISE;
3093 END insert_intl_texts;
3094
3095 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3096 PROCEDURE refresh_ui_actions(p_global_tmpl_tbl cz_pb_mgr.t_ref)
3097 IS
3098 l_update_str VARCHAR2(2000);
3099 BEGIN
3100 IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.COUNT > 0)
3101 THEN
3102 FOR i IN cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.FIRST .. cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.LAST
3103 LOOP
3104 IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(i) = 0)
3105 THEN
3106 l_update_str :=
3107 'UPDATE cz_ui_actions'
3108 || cz_pb_mgr.v_db_link
3109 || ' t'
3110 || ' '
3111 || 'SET (CONTEXT_COMPONENT_ID,RENDER_CONDITION_ID,UI_ACTION_TYPE,'
3112 || ' '
3113 || 'TARGET_UI_DEF_ID,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
3114 || ' '
3115 || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,TARGET_EXPL_NODE_ID,'
3116 || ' '
3117 || 'URL_PROPERTY_ID,TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
3118 || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
3119 || 'PROCESSING_PAGE_TEMPL_ID,PROC_PAGE_TEMPL_UI_DEF_ID,'
3120 || 'PROCESSING_CAPTION_TEXT_ID,PAGE_TITLE_TEXT_ID,MAIN_MESSAGE_TEXT_ID) '
3121 || '='
3122 || ' '
3123 || '( SELECT :1,:2,UI_ACTION_TYPE,:3,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
3124 || ' '
3125 || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,:4,URL_PROPERTY_ID,'
3126 || 'TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
3127 || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
3128 || ':5,:6,:7,:8,:9 '
3129 || 'FROM cz_ui_actions WHERE ui_def_id = 0'
3130 || ' '
3131 || 'AND ui_action_id = :10 )'
3132 || ' '
3133 || 'WHERE t.ui_def_id = 1'
3134 || ' '
3135 || 'AND t.ui_action_id = :11';
3136
3137 EXECUTE IMMEDIATE l_update_str
3138 USING cz_pb_mgr.g_ui_actns_ctx_comp_tbl(i)
3139 ,cz_pb_mgr.g_ui_actns_ren_cond_tbl(i)
3140 ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref(i)
3141 ,cz_pb_mgr.g_ui_actns_tgtexpl_ref(i)
3142 ,cz_pb_mgr.g_uiact_prcpg_templ_tbl(i)
3143 ,cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(i)
3144 ,cz_pb_mgr.g_uiact_prc_caption_tbl(i)
3145 ,cz_pb_mgr.g_uiact_pg_title_tbl(i)
3146 ,cz_pb_mgr.g_uiact_main_msg_tbl(i)
3147 ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(i)
3148 ,cz_pb_mgr.g_ui_actns_ui_act_id_ref(i);
3149 END IF;
3150 END LOOP;
3151 END IF;
3152
3153 COMMIT;
3154 EXCEPTION
3155 WHEN OTHERS
3156 THEN
3157 RAISE;
3158 END refresh_ui_actions;
3159
3160 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3161 PROCEDURE refresh_global_templates(p_global_tmpl_tbl cz_pb_mgr.t_ref)
3162 IS
3163 l_update_str VARCHAR2(2000);
3164 BEGIN
3165 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
3166 THEN
3167 FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
3168 LOOP
3169 IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
3170 THEN
3171 l_update_str :=
3172 'UPDATE cz_ui_templates'
3173 || cz_pb_mgr.v_db_link
3174 || ' t'
3175 || ' '
3176 || 'SET (TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,BUTTON_BAR_TEMPLATE_ID'
3177 || ' '
3178 || ',MESSAGE_TYPE,MAIN_MESSAGE_ID,TITLE_ID,LAYOUT_UI_STYLE,ROOT_REGION_TYPE'
3179 || ' '
3180 || ',BUTTON_BAR_TEMPL_UIDEF_ID,ROOT_ELEMENT_SIGNATURE_ID,TEMPLATE_USAGE'
3181 || ' '
3182 || ') ='
3183 || ' '
3184 || '( SELECT TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,:1,MESSAGE_TYPE,'
3185 || ' '
3186 || ':2,:3,LAYOUT_UI_STYLE,ROOT_REGION_TYPE,:4,ROOT_ELEMENT_SIGNATURE_ID,'
3187 || ' '
3188 || 'TEMPLATE_USAGE FROM cz_ui_templates WHERE ui_def_id = 0'
3189 || ' '
3190 || 'AND template_id = :5 )'
3191 || ' '
3192 || 'WHERE t.ui_def_id = 1'
3193 || ' '
3194 || 'AND t.template_id = :6';
3195
3196 EXECUTE IMMEDIATE l_update_str
3197 USING cz_pb_mgr.g_ui_templates_button_tbl(i)
3198 ,cz_pb_mgr.g_ui_templates_msg_id_ref(i)
3199 ,cz_pb_mgr.g_ui_templates_title_ref(i)
3200 ,cz_pb_mgr.g_ui_templates_but_uidef_id(i)
3201 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
3202 ,cz_pb_mgr.g_ui_templates_new_temp_id_ref(i);
3203 END IF;
3204 END LOOP;
3205 END IF;
3206
3207 COMMIT;
3208 EXCEPTION
3209 WHEN OTHERS
3210 THEN
3211 RAISE;
3212 END refresh_global_templates;
3213
3214 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3215 ----collect all os style UI(s)
3216 PROCEDURE get_oa_uis(p_src_models IN cz_pb_mgr.t_ref, x_oa_ui_def_ref IN OUT NOCOPY cz_pb_mgr.t_ref, x_oa_ui_def_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
3217 AS
3218 v_ui_def_count NUMBER := 0;
3219 rec_count NUMBER := 0;
3220 v_src_uis_tbl cz_pb_mgr.t_ref;
3221 l_export_model_id cz_devl_projects.devl_project_id%TYPE;
3222 l_menu_caption_rule_tbl cz_pb_mgr.t_ref;
3223 l_page_caption_rule_tbl cz_pb_mgr.t_ref;
3224 l_from_mt_id_tbl cz_pb_mgr.t_ref;
3225 BEGIN
3226 IF (p_src_models.COUNT > 0)
3227 THEN
3228 x_oa_ui_def_tbl.DELETE;
3229 l_menu_caption_rule_tbl.DELETE;
3230 l_page_caption_rule_tbl.DELETE;
3231
3232 FOR i IN p_src_models.FIRST .. p_src_models.LAST
3233 LOOP
3234 l_export_model_id := p_src_models(i);
3235 v_src_uis_tbl.DELETE;
3236
3237 BEGIN
3238 SELECT cz_ui_defs.ui_def_id, cz_ui_defs.menu_caption_rule_id, cz_ui_defs.page_caption_rule_id, cz_ui_defs.from_master_template_id
3239 BULK COLLECT INTO v_src_uis_tbl, l_menu_caption_rule_tbl, l_page_caption_rule_tbl, l_from_mt_id_tbl
3240 FROM cz_ui_defs
3241 WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.ui_style = oa_ui_style AND cz_ui_defs.deleted_flag = '0';
3242 EXCEPTION
3243 WHEN NO_DATA_FOUND
3244 THEN
3245 -----if there are no UI do not care
3246 NULL;
3247 WHEN OTHERS
3248 THEN
3249 RAISE;
3250 END;
3251
3252 IF (v_src_uis_tbl.COUNT > 0)
3253 THEN
3254 FOR i IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
3255 LOOP
3256 v_ui_def_count := x_oa_ui_def_ref.COUNT + 1;
3257 rec_count := x_oa_ui_def_tbl.COUNT + 1;
3258 v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(i);
3259 x_oa_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(i);
3260 x_oa_ui_def_tbl(rec_count) := v_src_uis_tbl(i);
3261 cz_pb_mgr.v_ui_defs_mcpt_rule_ref(v_ui_def_count) := l_menu_caption_rule_tbl(i);
3262 cz_pb_mgr.v_ui_defs_pcpt_rule_ref(v_ui_def_count) := l_page_caption_rule_tbl(i);
3263 END LOOP;
3264 END IF;
3265 END LOOP; /* end loop of FOR I IN p_src_models.FIRST */
3266 END IF; /* end if of (p_src_models.COUNT > 0) */
3267 EXCEPTION
3268 WHEN OTHERS
3269 THEN
3270 RAISE;
3271 END get_oa_uis;
3272
3273 -------------------
3274 FUNCTION createelement(p_namespace IN OUT NOCOPY VARCHAR2, p_tagname IN VARCHAR2)
3275 RETURN jdr_docbuilder.ELEMENT
3276 IS
3277 l_child_element jdr_docbuilder.ELEMENT;
3278 BEGIN
3279 IF (p_namespace IS NULL)
3280 THEN
3281 p_namespace := 'jrad:';
3282 END IF;
3283
3284 l_child_element := jdr_docbuilder.createelement(p_namespace, p_tagname);
3285 RETURN l_child_element;
3286 EXCEPTION
3287 WHEN OTHERS
3288 THEN
3289 RAISE;
3290 END;
3291
3292 ----------------------------------------------
3293 PROCEDURE synch_user_attribute(attrval IN OUT NOCOPY VARCHAR2)
3294 AS
3295 l_new_persistentid NUMBER;
3296 l_temp_attr3_name VARCHAR2(250);
3297 l_attr3_name VARCHAR2(250);
3298 l_attr3_name_value_new VARCHAR2(250);
3299 l_attr3_name_value_old VARCHAR2(250);
3300 l_equal_pos NUMBER;
3301 l_pipe_pos NUMBER;
3302 l_cnt NUMBER;
3303 l_pipe VARCHAR2(1);
3304 l_old_id VARCHAR2(250);
3305 l_last_count NUMBER;
3306 BEGIN
3307 -- Check for user:attribute1 or user:attribute2 or user:attribute3
3308 --1. loop till all the name-value pairs are replaced with the new persistent ids values.
3309 --2. get the value, check if there is any entry into the global array
3310 --3. replace the value with the new one.
3311 l_temp_attr3_name := attrval;
3312 l_cnt := 0;
3313
3314 WHILE(l_temp_attr3_name IS NOT NULL)
3315 LOOP -- check if there are '|' at the begining of the string
3316 IF (LENGTH(l_temp_attr3_name) = l_last_count)
3317 THEN
3318 EXIT;
3319 ELSE
3320 l_last_count := LENGTH(l_temp_attr3_name);
3321 END IF;
3322
3323 l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
3324
3325 WHILE(l_pipe = '|')
3326 LOOP
3327 --if ( l_pipe = '|' ) then
3328 -- trim to remove '|' from the start till no '|' are found
3329 l_temp_attr3_name := SUBSTR(l_temp_attr3_name, 2, LENGTH(l_temp_attr3_name));
3330 l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
3331 --continue;
3332 END LOOP;
3333
3334 l_equal_pos := INSTR(l_temp_attr3_name, '=');
3335 l_attr3_name := SUBSTR(l_temp_attr3_name, l_cnt, l_equal_pos - 1);
3336 l_pipe_pos := INSTR(l_temp_attr3_name, '|');
3337
3338 IF (l_pipe_pos = 0)
3339 THEN
3340 l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1);
3341 l_attr3_name_value_old := l_temp_attr3_name;
3342 ELSE
3343 l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1,(l_pipe_pos - l_equal_pos) - 1);
3344 l_attr3_name_value_old := SUBSTR(l_temp_attr3_name, 0, l_pipe_pos - 1);
3345 END IF;
3346
3347 BEGIN
3348 IF (l_attr3_name = 'actionId')
3349 THEN
3350 IF (cz_pb_mgr.g_ui_actions_id_idx_ref.EXISTS(l_old_id))
3351 THEN
3352 l_new_persistentid := cz_pb_mgr.g_ui_actions_id_idx_ref(l_old_id);
3353 END IF;
3354 ELSIF(l_attr3_name IN
3355 ('displayCondnId'
3356 ,'enabledCondnId'
3357 ,'captionRuleId'
3358 ,'colDisplayCondnId'
3359 ,'liDisplayCondnId'
3360 ,'rowDisplayCondnId'
3361 ,'rowEnabledCondnId'
3362 ,'rolloverRuleId'
3363 ,'tableSummaryRuleId'
3364 ,'switcherCondnId'
3365 )
3366 )
3367 THEN
3368 IF (cz_pb_mgr.v_cz_rules_rule_id_idx_ref.EXISTS(l_old_id))
3369 THEN
3370 l_new_persistentid := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_id);
3371 END IF;
3372 ELSIF(l_attr3_name IN
3373 ('urlIntlTextId', 'captionIntlTextId', 'rolloverIntlTextId', 'tableSummaryIntlTextId', 'cellIntlTextId', 'imageSourceIntlTextId')
3374 )
3375 THEN
3376 IF (cz_pb_mgr.v_cz_intl_text_idx_ref.EXISTS(l_old_id))
3377 THEN
3378 l_new_persistentid := cz_pb_mgr.v_cz_intl_text_idx_ref(l_old_id);
3379 END IF;
3380 END IF;
3381
3382 IF (l_new_persistentid IS NOT NULL)
3383 THEN
3384 l_attr3_name_value_new := REPLACE(l_attr3_name_value_old, l_old_id, l_new_persistentid);
3385 attrval := REPLACE(attrval, l_attr3_name_value_old, l_attr3_name_value_new);
3386 l_new_persistentid := NULL;
3387 END IF;
3388 EXCEPTION
3389 WHEN NO_DATA_FOUND
3390 THEN
3391 -- do nothing
3392 -- since , all the ref tables will hold only non-seeded ids,
3393 -- the only time we will fall in this exception is when we try to look up seeded ids
3394 l_new_persistentid := NULL;
3395 WHEN OTHERS
3396 THEN
3397 RAISE;
3398 END;
3399
3400 IF (l_pipe_pos = 0)
3401 THEN
3402 l_temp_attr3_name := NULL;
3403 ELSE
3404 l_temp_attr3_name := SUBSTR(l_temp_attr3_name, l_pipe_pos + 1, LENGTH(l_temp_attr3_name));
3405 END IF;
3406 END LOOP;
3407 END;
3408
3409 -----------------------------------------------------
3410 PROCEDURE exploretree(
3411 p_jrad_parent_element IN jdr_docbuilder.ELEMENT
3412 ,p_dom_parent_element IN xmldom.domnode
3413 ,p_grouping_tag IN VARCHAR2
3414 ,p_link_name IN VARCHAR2
3415 )
3416 IS
3417 l_child_nodes xmldom.domnodelist;
3418 l_child_node xmldom.domnode;
3419 l_parent_xml_node xmldom.domnode;
3420 l_child_count NUMBER := 0;
3421 l_namespace VARCHAR2(255);
3422 l_tagname VARCHAR2(255);
3423 l_tag_name VARCHAR2(255);
3424 l_attributes xmldom.domnamednodemap;
3425 l_attrib_node xmldom.domnode;
3426 l_attrib_count NUMBER := 0;
3427 attrname VARCHAR2(255);
3428 attrval VARCHAR2(4000);
3429 l_groupingns VARCHAR2(255);
3430 l_groupingtagname VARCHAR2(255);
3431 l_grouping_tag VARCHAR2(255);
3432 l_parent_element jdr_docbuilder.ELEMENT;
3433 l_child_element jdr_docbuilder.ELEMENT;
3434 l_ampers VARCHAR2(1) := fnd_global.local_chr(38);
3435 l_parent_tag_name VARCHAR2(255);
3436 BEGIN
3437 l_child_nodes := xmldom.getchildnodes(p_dom_parent_element);
3438 l_child_count := xmldom.getlength(l_child_nodes);
3439 l_parent_element := p_jrad_parent_element;
3440
3441 IF (l_child_count > 0)
3442 THEN
3443 FOR childcount IN 0 .. l_child_count - 1
3444 LOOP
3445 l_child_node := xmldom.item(l_child_nodes, childcount);
3446 l_grouping_tag := '';
3447 l_attributes := xmldom.getattributes(l_child_node);
3448 l_attrib_count := xmldom.getlength(l_attributes);
3449 l_tag_name := xmldom.getnodename(l_child_node);
3450 l_parent_xml_node := xmldom.getparentnode(l_child_node);
3451
3452 IF NOT(xmldom.isnull(l_parent_xml_node))
3453 THEN
3454 l_parent_tag_name := xmldom.getnodename(l_parent_xml_node);
3455 END IF;
3456
3457 IF ((l_attrib_count = 0) AND(l_tag_name NOT IN('ui:firePartialAction')))
3458 THEN
3459 l_grouping_tag := l_tag_name;
3460 END IF;
3461
3462 IF (p_grouping_tag IS NOT NULL)
3463 THEN
3464 l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
3465 l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
3466 l_child_element := createelement(l_namespace, l_tagname);
3467 l_attributes := xmldom.getattributes(l_child_node);
3468
3469 IF (l_attrib_count > 0)
3470 THEN
3471 FOR attrcount IN 0 .. l_attrib_count - 1
3472 LOOP
3473 l_attrib_node := xmldom.item(l_attributes, attrcount);
3474 attrname := xmldom.getnodename(l_attrib_node);
3475 attrval := xmldom.getnodevalue(l_attrib_node);
3476 attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
3477 attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
3478 attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
3479 attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
3480 attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
3481 jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
3482 END LOOP;
3483 END IF;
3484
3485 l_groupingns := SUBSTR(p_grouping_tag, 1, INSTR(p_grouping_tag, ':'));
3486 l_groupingtagname := SUBSTR(p_grouping_tag, INSTR(p_grouping_tag, ':') + 1);
3487
3488 IF (l_groupingns IS NULL)
3489 THEN
3490 l_groupingns := 'jrad:';
3491 END IF;
3492
3493 jdr_docbuilder.addchild(p_jrad_parent_element, l_groupingns, l_groupingtagname, l_child_element);
3494 exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
3495 ELSE
3496 l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
3497 l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
3498 l_child_element := createelement(l_namespace, l_tagname);
3499
3500 IF (l_attrib_count > 0)
3501 THEN
3502 FOR attrcount IN 0 .. l_attrib_count - 1
3503 LOOP
3504 l_attrib_node := xmldom.item(l_attributes, attrcount);
3505 attrname := xmldom.getnodename(l_attrib_node);
3506 attrval := xmldom.getnodevalue(l_attrib_node);
3507 attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
3508 attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
3509 attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
3510 attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
3511 attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
3512 jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
3513 END LOOP;
3514 END IF;
3515
3516 IF (l_grouping_tag IS NULL)
3517 THEN
3518 jdr_docbuilder.addchild(p_jrad_parent_element, l_child_element);
3519 exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
3520 ELSE
3521 exploretree(p_jrad_parent_element, l_child_node, l_grouping_tag, p_link_name);
3522 END IF;
3523 END IF;
3524 END LOOP;
3525 END IF;
3526 EXCEPTION
3527 -- bug14191479. Checking for the Value Error, this will be raised when length attrval exceeds 4000 characters
3528 WHEN VALUE_ERROR THEN
3529 cz_pb_mgr.v_err_message := Replace( l_tag_name , 'oa:' , '');
3530 -- if it is a RAWTEXT then populate message that it exceeds 4000 characters
3531 IF( cz_pb_mgr.v_err_message = 'rawText' ) THEN
3532 cz_pb_mgr.v_err_message := 'The length of the rawtext exceeds 4000 characters. Please split into two raw texts ';
3533 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
3534 END IF;
3535 RAISE;
3536 WHEN OTHERS
3537 THEN
3538 RAISE;
3539 END exploretree;
3540
3541 ----------------------------------------------------
3542 -- ancestorNode="docname.ancestorid", where docname normally pointing to itself,
3543 -- ancestor being immediate parent or higher level's
3544 -- e.g. /oracle/apps/cz/runtime/oa/webui/templates/summary/28501_170._czc233440-xxx
3545 -- /oracle/apps/cz/runtime/oa/webui/regions/ui44563/Page_44563_1.16496045-yyy
3546 PROCEDURE handle_ancestorNode(p_old_doc_name IN VARCHAR2, p_new_doc_name IN VARCHAR2, p_chunk IN OUT NOCOPY LONG)
3547 IS
3548 BEGIN
3549 IF instr(p_chunk, 'ancestorNode="' || p_old_doc_name || '.') > 0 THEN
3550 p_chunk := replace(p_chunk, 'ancestorNode="' || p_old_doc_name || '.',
3551 'ancestorNode="' || p_new_doc_name || '.');
3552 END IF;
3553 END handle_ancestorNode;
3554
3555 ----------------------------------------------------
3556 --There are some issues with having the p_chunk
3557 --parameter on replace_extends as a CLOB. For some reason, the getLength on a CLOB for certain
3558 --JRAD documents was returning a 0, and UI copy procedure was failing.
3559 --Retaining this parameter as LONG and changing the places where we were
3560 --calling the procedure to LONG so we be consistent everywhere
3561 --See Bug 4930937 for symptoms of the bug.
3562 PROCEDURE replace_extends(p_chunk IN OUT NOCOPY LONG)
3563 IS
3564 BEGIN
3565 IF (cz_pb_mgr.g_ui_templates_jrad_old_ref.COUNT > 0) THEN
3566 FOR i IN cz_pb_mgr.g_ui_templates_jrad_old_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_old_ref.LAST
3567 LOOP
3568 IF (INSTR(p_chunk, cz_pb_mgr.g_ui_templates_jrad_old_ref(i) || '"') > 0) THEN
3569 p_chunk := REPLACE(p_chunk, cz_pb_mgr.g_ui_templates_jrad_old_ref(i) || '"', cz_pb_mgr.g_ui_templates_jrad_new_ref(i) || '"');
3570 END IF;
3571 END LOOP;
3572 END IF;
3573
3574 IF cz_pb_mgr.g_tmpl_jrad_old_tbl.COUNT > 0 THEN
3575 FOR i IN cz_pb_mgr.g_tmpl_jrad_old_tbl.FIRST .. cz_pb_mgr.g_tmpl_jrad_old_tbl.LAST LOOP
3576 IF INSTR(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"') > 0 THEN
3577 p_chunk := REPLACE(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"', cz_pb_mgr.g_tmpl_jrad_new_tbl(i) || '"');
3578 END IF;
3579 END LOOP;
3580 END IF;
3581 END replace_extends;
3582
3583 ----------------------------------------------------
3584 PROCEDURE collect_chunks(
3585 p_document_name IN VARCHAR2
3586 ,p_link_name IN VARCHAR2
3587 ,x_return_status OUT NOCOPY VARCHAR2
3588 ,x_msg_count OUT NOCOPY NUMBER
3589 ,x_msg_data OUT NOCOPY VARCHAR2
3590 )
3591 IS
3592 l_length BINARY_INTEGER;
3593 l_buffer VARCHAR2(32767);
3594 firstchunk VARCHAR2(32767);
3595 document_is_null EXCEPTION;
3596 l_seq_nbr NUMBER := 0;
3597
3598 TYPE chunk_record IS RECORD(
3599 jrad_doc VARCHAR2(255)
3600 ,seq_nbr NUMBER
3601 ,xml_chunk VARCHAR2(32767)
3602 );
3603
3604 TYPE chunk_record_tbl IS TABLE OF chunk_record
3605 INDEX BY BINARY_INTEGER;
3606
3607 l_chunk_tbl chunk_record_tbl;
3608 l_exportfinished BOOLEAN;
3609 BEGIN
3610 pbdebug := 22021;
3611 x_return_status := FND_API.G_RET_STS_SUCCESS;
3612 x_msg_count := 0;
3613 x_msg_data := '';
3614 jdr_docbuilder.REFRESH;
3615
3616 IF (p_document_name IS NULL) THEN
3617 RAISE document_is_null;
3618 END IF;
3619
3620 firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3621
3622 IF (firstchunk IS NULL) THEN
3623 RAISE document_is_null;
3624 END IF;
3625
3626 l_buffer := LTRIM(RTRIM(firstchunk));
3627
3628 IF (l_buffer IS NOT NULL) THEN
3629 l_seq_nbr := l_seq_nbr + 1;
3630 l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3631 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3632 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3633 END IF;
3634
3635 LOOP
3636 l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3637 l_buffer := LTRIM(RTRIM(l_buffer));
3638 EXIT WHEN l_buffer IS NULL;
3639
3640 IF (l_buffer IS NOT NULL) THEN
3641 l_seq_nbr := l_seq_nbr + 1;
3642 l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3643 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3644 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3645 END IF;
3646 END LOOP;
3647
3648 -- Bug#10417318:Modified the JRAD_CHUNKS insert and marking each chunk against the source publication id so that
3649 -- when two publications runs, shouldn't delete xml chunk data for each other. This change is all the palces for
3650 -- this table while insert and delete chunks
3651
3652 IF (l_chunk_tbl.COUNT > 0) THEN
3653 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3654 LOOP
3655 EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (publication_id,jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values ('||cz_pb_mgr.v_publication_id||',:1,:2,:3)'
3656 USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3657 END LOOP;
3658 END IF;
3659
3660 COMMIT;
3661 jdr_docbuilder.REFRESH;
3662 EXCEPTION
3663 WHEN document_is_null THEN
3664 x_return_status := FND_API.G_RET_STS_ERROR;
3665 x_msg_count := 1;
3666 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3667 RAISE;
3668 WHEN OTHERS THEN
3669 x_return_status := FND_API.G_RET_STS_ERROR;
3670 x_msg_count := 1;
3671 x_msg_data := SQLERRM;
3672 RAISE;
3673 END collect_chunks;
3674
3675 ----------------------------------------------------
3676 -- NOTE: p_document_type of NULL (default) represents a UI content template document.
3677 -- To collect JRAD chunks for UI pages, UI_PAGE should be passed as input value.
3678 PROCEDURE collect_chunks(
3679 p_document_name IN VARCHAR2
3680 ,p_new_document_name IN VARCHAR2
3681 ,p_link_name IN VARCHAR2
3682 ,x_return_status OUT NOCOPY VARCHAR2
3683 ,x_msg_count OUT NOCOPY NUMBER
3684 ,x_msg_data OUT NOCOPY VARCHAR2
3685 ,p_document_type IN VARCHAR2 DEFAULT NULL
3686 )
3687 IS
3688 amt BINARY_INTEGER := 32767;
3689 l_length BINARY_INTEGER;
3690 l_offset BINARY_INTEGER := 1;
3691 l_buffer VARCHAR2(32767);
3692 firstchunk VARCHAR2(32767);
3693 document_is_null EXCEPTION;
3694 l_seq_nbr NUMBER := 0;
3695 l_old_ui_def VARCHAR2(200);
3696 l_new_ui_def VARCHAR2(300);
3697 l_lob CLOB;
3698 l_lob_temp CLOB;
3699 p xmlparser.parser;
3700 doc xmldom.domdocument;
3701 nl xmldom.domnodelist;
3702 one_node xmldom.domnode;
3703 one_element xmldom.domelement;
3704 l_value VARCHAR2(32767);
3705 nodeMap xmldom.DOMNamedNodeMap;
3706 n xmldom.DOMNode;
3707 attrname varchar2(100);
3708 len2 NUMBER;
3709
3710 TYPE chunk_record IS RECORD(
3711 jrad_doc VARCHAR2(255)
3712 ,seq_nbr NUMBER
3713 ,xml_chunk VARCHAR2(32767)
3714 );
3715
3716 TYPE chunk_record_tbl IS TABLE OF chunk_record
3717 INDEX BY BINARY_INTEGER;
3718
3719 l_chunk_tbl chunk_record_tbl;
3720 l_exportfinished BOOLEAN;
3721 BEGIN
3722 pbdebug := 22022;
3723 x_return_status := FND_API.G_RET_STS_SUCCESS;
3724 x_msg_count := 0;
3725 x_msg_data := '';
3726 jdr_docbuilder.REFRESH;
3727
3728 IF (p_document_name IS NULL) THEN
3729 RAISE document_is_null;
3730 END IF;
3731
3732 firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3733
3734 IF (firstchunk IS NULL) THEN
3735 RAISE document_is_null;
3736 END IF;
3737
3738 l_buffer := LTRIM(RTRIM(firstchunk));
3739
3740 IF (l_buffer IS NOT NULL) THEN
3741 l_seq_nbr := l_seq_nbr + 1;
3742 l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3743 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3744 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3745 END IF;
3746
3747 LOOP
3748 l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3749 l_buffer := LTRIM(RTRIM(l_buffer));
3750 EXIT WHEN l_buffer IS NULL;
3751
3752 IF (l_buffer IS NOT NULL) THEN
3753 l_seq_nbr := l_seq_nbr + 1;
3754 l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3755 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3756 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3757 END IF;
3758 END LOOP;
3759
3760 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3761 IF (l_chunk_tbl.COUNT > 0) THEN
3762 SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3763 SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3764
3765 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3766 LOOP
3767 -- collect the entire document in the CLOB
3768 l_length := LENGTH(l_chunk_tbl(i).xml_chunk);
3769 SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk_tbl(i).xml_chunk);
3770 END LOOP;
3771
3772 -- parse the document for user:attribute3
3773 -- call synch_user_attribute
3774 l_length := SYS.DBMS_LOB.getlength(l_lob);
3775 p := xmlparser.newparser;
3776 xmlparser.parseclob(p, l_lob);
3777 SYS.DBMS_LOB.CLOSE(l_lob);
3778 SYS.DBMS_LOB.freetemporary(l_lob);
3779 doc := xmlparser.getdocument(p);
3780 nl := xmldom.getelementsbytagname(doc, '*');
3781
3782 IF (p_document_type IS NULL )THEN
3783 FOR node_index IN 0 .. xmldom.getlength(nl) - 1
3784 LOOP
3785 one_node := xmldom.item(nl, node_index);
3786 one_element := xmldom.makeelement(one_node);
3787 --node_attr := xmldom.getattributenode(one_element, 'user:attribute3');
3788 -- This is a workaround for bug 5211850 till the API xmldom.getattributenode is fixed
3789 -- get all attributes of element
3790 nodeMap := xmldom.getAttributes(one_node);
3791
3792 IF (xmldom.isNull(nodeMap) = FALSE) THEN
3793 len2 := xmldom.getLength(nodeMap);
3794 -- loop through attributes
3795 FOR i IN 0..len2-1 LOOP
3796 n := xmldom.item(nodeMap, i);
3797 attrname := xmldom.getNodeName(n);
3798 IF(attrname='user:attribute3' ) THEN
3799 l_value := xmldom.getNodeValue(n);
3800 EXIT;
3801 END IF;
3802 END LOOP;
3803 END IF;
3804
3805 IF (l_value IS NOT NULL) THEN
3806 synch_user_attribute(l_value);
3807 xmldom.setattribute(one_element, 'user:attribute3', l_value);
3808 l_value:=NULL;
3809 END IF;
3810 END LOOP;
3811 END IF;
3812 -- Break the document to insert into the cz_jrad_chunks
3813 SYS.DBMS_LOB.createtemporary(l_lob_temp, TRUE, DBMS_LOB.SESSION);
3814 SYS.DBMS_LOB.OPEN(l_lob_temp, DBMS_LOB.lob_readwrite);
3815 xmldom.writetoclob(doc, l_lob_temp);
3816
3817 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3818 LOOP
3819 SYS.DBMS_LOB.READ(l_lob_temp, amt, l_offset, l_buffer);
3820 l_chunk_tbl(i).xml_chunk := l_buffer;
3821 l_offset := l_offset + amt;
3822 l_buffer := NULL;
3823 END LOOP;
3824
3825 SYS.DBMS_LOB.CLOSE(l_lob_temp);
3826 SYS.DBMS_LOB.freetemporary(l_lob_temp);
3827 xmlparser.freeparser(p);
3828 xmldom.freeDocument(doc);
3829 END IF;
3830 END IF;
3831
3832 --Bug#10417318:Modified insert for JRAD_CHUNKS as explained earlier.
3833
3834 IF (l_chunk_tbl.COUNT > 0) THEN
3835 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3836 LOOP
3837 replace_extends(l_chunk_tbl(i).xml_chunk);
3838 handle_ancestorNode(p_document_name, p_new_document_name, l_chunk_tbl(i).xml_chunk);
3839 EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (publication_id,jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values ('||cz_pb_mgr.v_publication_id||',:1,:2,:3)'
3840 USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3841 END LOOP;
3842 END IF;
3843
3844 COMMIT;
3845 jdr_docbuilder.REFRESH;
3846 EXCEPTION
3847 WHEN document_is_null THEN
3848 x_return_status := FND_API.G_RET_STS_ERROR;
3849 x_msg_count := 1;
3850 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3851 RAISE;
3852 WHEN OTHERS THEN
3853 x_return_status := FND_API.G_RET_STS_ERROR;
3854 x_msg_count := 1;
3855 x_msg_data := SQLERRM;
3856 RAISE;
3857 END collect_chunks;
3858
3859 ------------------------------------
3860 --Bug10417318: Modified Select clause and added condition for documents specific to the publication Id
3861 --Passing Publication Id as this executes in remote instance
3862 PROCEDURE insert_jrad_docs(p_publication_id IN NUMBER)
3863 IS
3864 PRAGMA AUTONOMOUS_TRANSACTION;
3865
3866 CURSOR jrad_docs_cur
3867 IS
3868 SELECT DISTINCT jrad_doc
3869 FROM cz_jrad_chunks
3870 WHERE publication_id=p_publication_id;
3871
3872 CURSOR jrad_chunks_cur(p_jrad_doc VARCHAR2)
3873 IS
3874 SELECT xml_chunk
3875 FROM cz_jrad_chunks
3876 WHERE jrad_doc = p_jrad_doc
3877 AND publication_id=p_publication_id
3878 ORDER BY seq_nbr;
3879
3880 l_jrad_doc VARCHAR2(255);
3881 l_chunk VARCHAR2(32767);
3882 l_lob CLOB;
3883 l_offset PLS_INTEGER := 1;
3884 l_length BINARY_INTEGER;
3885 l_doc_id NUMBER;
3886 p xmlparser.parser;
3887 doc xmldom.domdocument;
3888 nl xmldom.domnodelist;
3889 len NUMBER;
3890 n xmldom.domnode;
3891 top_node xmldom.domnode;
3892 l_parent_node xmldom.domnode;
3893 v_ns VARCHAR2(255);
3894 v_el VARCHAR2(255);
3895 len1 NUMBER;
3896 len2 NUMBER;
3897 nnm xmldom.domnamednodemap;
3898 attrname VARCHAR2(255);
3899 attrval VARCHAR2(255);
3900 newattrname VARCHAR2(255);
3901 name_space VARCHAR2(255);
3902 tag_name VARCHAR2(255);
3903 l_doc jdr_docbuilder.document;
3904 top_element jdr_docbuilder.ELEMENT;
3905 g_document jdr_docbuilder.document;
3906 l_new_document jdr_docbuilder.document;
3907 jrad_save_status PLS_INTEGER;
3908 document_is_null EXCEPTION;
3909 l_msg VARCHAR2(2000);
3910
3911 TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
3912
3913 g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
3914 BEGIN
3915 pbdebug := 22024;
3916
3917 OPEN jrad_docs_cur;
3918
3919 LOOP
3920 jdr_docbuilder.REFRESH;
3921
3922 FETCH jrad_docs_cur
3923 INTO l_jrad_doc;
3924
3925 EXIT WHEN jrad_docs_cur%NOTFOUND;
3926 SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3927 SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3928
3929 OPEN jrad_chunks_cur(l_jrad_doc);
3930
3931 LOOP
3932 FETCH jrad_chunks_cur
3933 INTO l_chunk;
3934
3935 EXIT WHEN jrad_chunks_cur%NOTFOUND;
3936
3937 --There are some issues with having the p_chunk
3938 --parameter on replace extends as a CLOB. For some reason, the getLength on a CLOB for certain
3939 --JRAD documents was returning a 0, and UI copy procedure was failing.
3940 --Retaining this parameter as LONG and changing the places where we were
3941 --calling the procedure to LONG so we be consistent everywhere
3942 --See Bug 4930937 for symptoms of the bug.
3943 IF (l_chunk IS NOT NULL)
3944 THEN
3945 -- for schema migration, no need to do any replacement; for remote publishing (or migration),
3946 -- the replacement is done before this gets called (e.g., when collect_chunks)
3947 -- and the two templ arrays are empty anyway
3948 -- replace_extends(l_chunk);
3949 l_length := LENGTH(l_chunk);
3950 SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk);
3951 END IF;
3952 END LOOP;
3953
3954 CLOSE jrad_chunks_cur;
3955
3956 l_length := SYS.DBMS_LOB.getlength(l_lob);
3957 p := xmlparser.newparser;
3958 xmlparser.parseclob(p, l_lob);
3959 doc := xmlparser.getdocument(p);
3960 SYS.DBMS_LOB.CLOSE(l_lob);
3961 SYS.DBMS_LOB.freetemporary(l_lob);
3962 l_doc := jdr_docbuilder.createdocument(l_jrad_doc);
3963 top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
3964
3965 IF (g_toplevel_attr_tbl.COUNT > 0)
3966 THEN
3967 FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
3968 LOOP
3969 BEGIN
3970 xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
3971 EXCEPTION
3972 WHEN OTHERS
3973 THEN
3974 NULL;
3975 END;
3976 END LOOP;
3977 END IF;
3978
3979 name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
3980 tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
3981 top_element := createelement(name_space, tag_name);
3982 nnm := xmldom.getattributes(top_node);
3983
3984 IF (xmldom.isnull(nnm) = FALSE)
3985 THEN
3986 len2 := xmldom.getlength(nnm);
3987
3988 FOR i IN 0 .. len2 - 1
3989 LOOP
3990 n := xmldom.item(nnm, i);
3991 attrname := xmldom.getnodename(n);
3992 attrval := xmldom.getnodevalue(n);
3993 jdr_docbuilder.setattribute(top_element, attrname, attrval);
3994 END LOOP;
3995 END IF;
3996
3997 jdr_docbuilder.settoplevelelement(l_doc, top_element);
3998
3999 BEGIN
4000 exploretree(top_element, top_node, '', ' ');
4001 EXCEPTION
4002 ----bug14191479. To handle value errors.
4003 WHEN VALUE_ERROR THEN
4004 RAISE;
4005 WHEN OTHERS
4006 THEN
4007 RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
4008 END;
4009
4010 jrad_save_status := jdr_docbuilder.SAVE;
4011 xmlparser.freeparser(p);
4012 xmldom.freeDocument(doc);
4013 COMMIT;
4014 jdr_docbuilder.REFRESH;
4015 END LOOP;
4016
4017 CLOSE jrad_docs_cur;
4018
4019 COMMIT;
4020 EXCEPTION
4021 WHEN OTHERS
4022 THEN
4023 ROLLBACK;
4024 jdr_docbuilder.REFRESH;
4025 IF l_jrad_doc is not null THEN
4026 l_msg := l_jrad_doc || '-' || SQLERRM;
4027 ELSE
4028 l_msg := SQLERRM;
4029 END IF;
4030
4031 INSERT INTO cz_db_logs
4032 (logtime, caller, MESSAGE
4033 )
4034 VALUES (SYSDATE, 'CZJRADLOAD', l_msg
4035 );
4036
4037 COMMIT;
4038 RAISE;
4039 END;
4040
4041 --------------------------------------------------
4042 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4043 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4044 PROCEDURE export_jrad_docs(
4045 p_document_name IN VARCHAR2
4046 ,p_link_name IN VARCHAR2
4047 ,x_return_status OUT NOCOPY VARCHAR2
4048 ,x_msg_count OUT NOCOPY NUMBER
4049 ,x_msg_data OUT NOCOPY VARCHAR2
4050 )
4051 IS
4052 BEGIN
4053 pbdebug := 22025;
4054
4055 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4056
4057 collect_chunks(p_document_name, p_link_name, x_return_status, x_msg_count, x_msg_data);
4058
4059 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4060
4061 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4062
4063 EXCEPTION
4064 WHEN NO_DATA_FOUND
4065 THEN
4066 x_return_status := FND_API.G_RET_STS_ERROR;
4067 x_msg_count := 1;
4068 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
4069 WHEN OTHERS
4070 THEN
4071 x_return_status := fnd_api.g_ret_sts_unexp_error;
4072 x_msg_count := 1;
4073 x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
4074 END export_jrad_docs;
4075
4076 ----------------------------------------------------
4077 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4078 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4079 PROCEDURE export_jrad_docs(
4080 p_ui_def_id IN NUMBER
4081 ,p_link_name IN VARCHAR2
4082 ,x_return_status OUT NOCOPY VARCHAR2
4083 ,x_msg_count OUT NOCOPY NUMBER
4084 ,x_msg_data OUT NOCOPY VARCHAR2
4085 )
4086 IS
4087 l_jrad_doc_tbl jraddoc_type_tbl;
4088 l_link_name cz_servers.fndnam_link_name%TYPE;
4089 link_name_is_null EXCEPTION;
4090 BEGIN
4091 pbdebug := 22026;
4092
4093 IF (p_link_name IS NULL)
4094 THEN
4095 RAISE link_name_is_null;
4096 ELSE
4097 l_link_name := '@' || p_link_name;
4098 END IF;
4099
4100 SELECT jrad_doc
4101 BULK COLLECT INTO l_jrad_doc_tbl
4102 FROM cz_ui_pages
4103 WHERE cz_ui_pages.ui_def_id = p_ui_def_id AND cz_ui_pages.deleted_flag = '0';
4104
4105 IF (l_jrad_doc_tbl.COUNT > 0)
4106 THEN
4107 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4108
4109 FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
4110 LOOP
4111 collect_chunks(l_jrad_doc_tbl(i), l_link_name, x_return_status, x_msg_count, x_msg_data);
4112 END LOOP;
4113
4114 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4115
4116 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4117 END IF;
4118 EXCEPTION
4119 WHEN link_name_is_null
4120 THEN
4121 x_return_status := FND_API.G_RET_STS_ERROR;
4122 x_msg_data := 'Db Link Name is Null';
4123 log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
4124 WHEN NO_DATA_FOUND
4125 THEN
4126 x_return_status := FND_API.G_RET_STS_ERROR;
4127 x_msg_count := 1;
4128 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_ui_def_id);
4129 WHEN OTHERS
4130 THEN
4131 x_return_status := fnd_api.g_ret_sts_unexp_error;
4132 x_msg_count := 1;
4133 x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
4134 END export_jrad_docs;
4135
4136 ------>>>>>>>>>>>>>>>>>>>>>>>>>>
4137 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4138 PROCEDURE export_template_jrad_docs(
4139 p_ui_def_id IN NUMBER
4140 ,p_template_id IN NUMBER
4141 ,p_link_name IN VARCHAR2
4142 ,x_return_status OUT NOCOPY VARCHAR2
4143 ,x_msg_count OUT NOCOPY NUMBER
4144 ,x_msg_data OUT NOCOPY VARCHAR2
4145 )
4146 IS
4147 l_jrad_doc_tbl jraddoc_type_tbl;
4148 BEGIN
4149 pbdebug := 22026;
4150
4151 SELECT jrad_doc
4152 BULK COLLECT INTO l_jrad_doc_tbl
4153 FROM cz_ui_templates
4154 WHERE cz_ui_templates.ui_def_id = p_ui_def_id
4155 AND cz_ui_templates.template_id = p_template_id
4156 AND cz_ui_templates.seeded_flag = '0'
4157 AND cz_ui_templates.deleted_flag = '0';
4158
4159 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4160 IF (l_jrad_doc_tbl.COUNT > 0)
4161 THEN
4162 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4163
4164 FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
4165 LOOP
4166 collect_chunks(l_jrad_doc_tbl(i), p_link_name, x_return_status, x_msg_count, x_msg_data);
4167 END LOOP;
4168
4169 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4170
4171 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4172 END IF;
4173
4174 EXCEPTION
4175 WHEN OTHERS
4176 THEN
4177 x_return_status := FND_API.G_RET_STS_ERROR;
4178 x_msg_count := 1;
4179 x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
4180 END export_template_jrad_docs;
4181
4182 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>
4183 --SManna(Jan'12). This procedure is not called from anywhere. Insert_into_repository does all the work.
4184 PROCEDURE export_template_jrad_docs(
4185 p_link_name IN VARCHAR2
4186 ,x_return_status OUT NOCOPY VARCHAR2
4187 ,x_msg_count OUT NOCOPY NUMBER
4188 ,x_msg_data OUT NOCOPY VARCHAR2
4189 )
4190 IS
4191 l_ui_def_id_tbl cz_pb_mgr.t_ref;
4192 l_template_id_tbl cz_pb_mgr.t_ref;
4193 l_link_name cz_servers.fndnam_link_name%TYPE;
4194 link_name_is_null EXCEPTION;
4195 BEGIN
4196 IF (p_link_name IS NULL)
4197 THEN
4198 RAISE link_name_is_null;
4199 ELSE
4200 l_link_name := '@' || p_link_name;
4201 END IF;
4202
4203 SELECT ui_def_id, template_id
4204 BULK COLLECT INTO l_ui_def_id_tbl, l_template_id_tbl
4205 FROM cz_ui_templates
4206 WHERE cz_ui_templates.deleted_flag = '0'
4207 AND cz_ui_templates.seeded_flag = '0'
4208 AND ( cz_ui_templates.ui_def_id = 0
4209 OR cz_ui_templates.ui_def_id IN(
4210 SELECT ui_def_id
4211 FROM cz_ui_defs
4212 WHERE cz_ui_defs.deleted_flag = '0'
4213 AND cz_ui_defs.devl_project_id IN(SELECT object_id
4214 FROM cz_rp_entries
4215 WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0'))
4216 );
4217
4218 IF (l_ui_def_id_tbl.COUNT > 0)
4219 THEN
4220 FOR i IN l_ui_def_id_tbl.FIRST .. l_ui_def_id_tbl.LAST
4221 LOOP
4222 x_return_status := FND_API.G_RET_STS_SUCCESS;
4223 x_msg_data := '';
4224 export_template_jrad_docs(l_ui_def_id_tbl(i), l_template_id_tbl(i), l_link_name, x_return_status, x_msg_count, x_msg_data);
4225
4226 IF (x_return_status = FND_API.G_RET_STS_ERROR)
4227 THEN
4228 log_pb_errors(x_msg_data, '0', 'EXPORTJRADDOCS', SQLCODE);
4229 END IF;
4230 END LOOP;
4231 END IF;
4232 EXCEPTION
4233 WHEN link_name_is_null
4234 THEN
4235 x_return_status := FND_API.G_RET_STS_ERROR;
4236 x_msg_data := 'Db Link Name is Null';
4237 log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
4238 WHEN OTHERS
4239 THEN
4240 x_return_status := FND_API.G_RET_STS_ERROR;
4241 x_msg_data := SQLERRM;
4242 log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
4243 END export_template_jrad_docs;
4244
4245 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4246 PROCEDURE insert_into_repository(p_old_document_name IN VARCHAR2, p_new_document_name IN VARCHAR2)
4247 IS
4248 l_lob CLOB;
4249 l_offset PLS_INTEGER := 1;
4250 l_length BINARY_INTEGER;
4251 l_doc_id NUMBER;
4252 l_buffer LONG;
4253 firstchunk LONG;
4254 p xmlparser.parser;
4255 doc xmldom.domdocument;
4256 nl xmldom.domnodelist;
4257 len NUMBER;
4258 n xmldom.domnode;
4259 top_node xmldom.domnode;
4260 l_parent_node xmldom.domnode;
4261 v_ns VARCHAR2(255);
4262 v_el VARCHAR2(255);
4263 len1 NUMBER;
4264 len2 NUMBER;
4265 nnm xmldom.domnamednodemap;
4266 attrname VARCHAR2(255);
4267 attrval VARCHAR2(255);
4268 newattrname VARCHAR2(255);
4269 name_space VARCHAR2(255);
4270 tag_name VARCHAR2(255);
4271 l_doc jdr_docbuilder.document;
4272 top_element jdr_docbuilder.ELEMENT;
4273 g_document jdr_docbuilder.document;
4274 l_new_document jdr_docbuilder.document;
4275 jrad_save_status PLS_INTEGER;
4276 document_is_null EXCEPTION;
4277
4278 TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
4279
4280 g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
4281 l_exportfinished BOOLEAN;
4282 BEGIN
4283 pbdebug := 22027;
4284 jdr_docbuilder.REFRESH;
4285
4286 IF (p_old_document_name IS NULL)
4287 THEN
4288 RAISE document_is_null;
4289 END IF;
4290
4291 --There are some issues with having the p_chunk
4292 --parameter as a CLOB. For some reason, the getLength on a CLOB for certain
4293 --JRAD documents was returning a 0, and UI copy procedure was failing.
4294 --Retaining this parameter as LONG and changing the places where we were
4295 --calling the procedure to LONG so we be consistent everywhere
4296 --See Bug 4930937 for symptoms of the bug.
4297 SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
4298 SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
4299 firstchunk := jdr_utils.exportdocument(p_old_document_name, l_exportfinished);
4300 replace_extends(firstchunk);
4301 handle_ancestorNode(p_old_document_name, p_new_document_name, firstchunk);
4302
4303 IF (firstchunk IS NULL)
4304 THEN
4305 RAISE document_is_null;
4306 END IF;
4307
4308 BEGIN
4309 SYS.DBMS_LOB.writeappend(l_lob, LENGTH(firstchunk), firstchunk);
4310 EXCEPTION
4311 WHEN OTHERS
4312 THEN
4313 NULL; ---- for negative index to be ignored
4314 END;
4315
4316 --There are some issues with having the p_chunk
4317 --parameter on replace_extends as a CLOB. For some reason, the getLength on a CLOB for certain
4318 --JRAD documents was returning a 0, and UI copy procedure was failing.
4319 --Retaining this parameter as LONG and changing the places where we were
4320 --calling the procedure to LONG so we be consistent everywhere
4321 --See Bug 4930937 for symptoms of the bug.
4322 LOOP
4323 l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
4324 EXIT WHEN l_buffer IS NULL;
4325 replace_extends(l_buffer);
4326 handle_ancestorNode(p_old_document_name, p_new_document_name, l_buffer);
4327 l_length := LENGTH(l_buffer);
4328 SYS.DBMS_LOB.writeappend(l_lob, l_length, l_buffer);
4329 END LOOP;
4330
4331 l_length := SYS.DBMS_LOB.getlength(l_lob);
4332 p := xmlparser.newparser;
4333 xmlparser.parseclob(p, l_lob);
4334 doc := xmlparser.getdocument(p);
4335 SYS.DBMS_LOB.CLOSE(l_lob);
4336 SYS.DBMS_LOB.freetemporary(l_lob);
4337 l_doc := jdr_docbuilder.createdocument(p_new_document_name);
4338 top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
4339
4340 IF (g_toplevel_attr_tbl.COUNT > 0)
4341 THEN
4342 FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
4343 LOOP
4344 BEGIN
4345 xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
4346 EXCEPTION
4347 WHEN OTHERS
4348 THEN
4349 NULL;
4350 END;
4351 END LOOP;
4352 END IF;
4353
4354 name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
4355 tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
4356 top_element := createelement(name_space, tag_name);
4357 nnm := xmldom.getattributes(top_node);
4358
4359 IF (xmldom.isnull(nnm) = FALSE)
4360 THEN
4361 len2 := xmldom.getlength(nnm);
4362
4363 FOR i IN 0 .. len2 - 1
4364 LOOP
4365 n := xmldom.item(nnm, i);
4366 attrname := xmldom.getnodename(n);
4367 attrval := xmldom.getnodevalue(n);
4368 jdr_docbuilder.setattribute(top_element, attrname, attrval);
4369 END LOOP;
4370 END IF;
4371
4372 jdr_docbuilder.settoplevelelement(l_doc, top_element);
4373
4374 BEGIN
4375 exploretree(top_element, top_node, '', ' ');
4376 EXCEPTION
4377 ----bug14191479. To handle value errors.
4378 WHEN VALUE_ERROR THEN
4379 RAISE;
4380 WHEN OTHERS
4381 THEN
4382 RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
4383 END;
4384
4385 jrad_save_status := jdr_docbuilder.SAVE;
4386 xmlparser.freeparser(p);
4387 COMMIT;
4388 cz_pb_mgr.g_jrad_trans_list := jdr_utils.translationlist();
4389 cz_pb_mgr.g_jrad_trans_list := jdr_utils.gettranslations(p_old_document_name);
4390
4391 IF (cz_pb_mgr.g_jrad_trans_list IS NOT NULL)
4392 THEN
4393 jdr_utils.savetranslations(p_new_document_name, cz_pb_mgr.g_jrad_trans_list);
4394 END IF;
4395
4396 jdr_docbuilder.REFRESH;
4397 COMMIT;
4398 EXCEPTION
4399 WHEN document_is_null
4400 THEN
4401 NULL;
4402 WHEN OTHERS
4403 THEN
4404 EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
4405
4406 RAISE;
4407 END insert_into_repository;
4408
4409 -------------------------------------------------------
4410 -- p_document_type is used to decide if id replacement on xml doc is needed in a remote model migration session:
4411 -- if it is null (template jrad docs), replacement will be done via collect_chunks -> synch_user_attribute,
4412 -- otherwise (page xml docs), no replacement will be performed.
4413 --Bug#10417318:Modified delete for JRAD_CHUNKS as explained earlier.
4414 --this is the actual procedure for collect_chunks and insert that is used in the code.
4415 PROCEDURE insert_into_repository(p_old_document_name IN VARCHAR2, p_new_document_name IN VARCHAR2, p_link_name IN VARCHAR2 , p_document_type IN VARCHAR2 DEFAULT NULL)
4416 IS
4417 document_is_null EXCEPTION;
4418 l_return_status VARCHAR2(1);
4419 l_msg_count NUMBER := 0;
4420 l_msg_data VARCHAR2(2000);
4421 BEGIN
4422 pbdebug := 22028;
4423
4424 IF (cz_pb_mgr.v_server_id <> 0)
4425 THEN
4426 jdr_docbuilder.REFRESH;
4427
4428 IF (p_old_document_name IS NULL)
4429 THEN
4430 RAISE document_is_null;
4431 END IF;
4432
4433 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4434
4435 collect_chunks(p_old_document_name, p_new_document_name, p_link_name, l_return_status, l_msg_count, l_msg_data , p_document_type);
4436
4437 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '('||cz_pb_mgr.v_publication_id||'); end; ';
4438
4439 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' WHERE publication_id='||cz_pb_mgr.v_publication_id||' ; commit; end; ';
4440 ELSE
4441 insert_into_repository(p_old_document_name, p_new_document_name);
4442 END IF;
4443
4444 EXCEPTION
4445 WHEN document_is_null
4446 THEN
4447 NULL;
4448 --bug14191479. To handle value errors.
4449 WHEN VALUE_ERROR THEN
4450 fnd_message.set_token('ERROR_TEXT', SQLERRM);
4451 fnd_message.set_token('PKG_NAME', 'cz_pb_mgr');
4452 fnd_message.set_token('PROCEDURE_NAME', 'INSERT_JRAD_DOCS');
4453 cz_pb_mgr.v_err_message := fnd_message.get;
4454 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
4455 --bug14191479. Log message added for JRAD Doc
4456 cz_pb_mgr.error_msg_populate('Jrad doc: ' ||p_old_document_name ,'cz_pb_mgr.EXPLORETREE',SQLCODE);
4457 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4458 RAISE;
4459
4460 WHEN EXPLORETREE_ERROR THEN
4461 fnd_message.set_name('FND', 'FND_AS_UNEXPECTED_ERROR');
4462 fnd_message.set_token('ERROR_TEXT', SQLERRM);
4463 fnd_message.set_token('PKG_NAME', 'cz_pb_mgr');
4464 fnd_message.set_token('PROCEDURE_NAME', 'INSERT_JRAD_DOCS');
4465 cz_pb_mgr.v_err_message := fnd_message.get;
4466 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
4467 --bug14151479. Log message added for JRAD Doc
4468 cz_pb_mgr.error_msg_populate('Jrad doc: ' ||p_old_document_name ,'cz_pb_mgr.EXPLORETREE',SQLCODE);
4469 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4470
4471 RAISE;
4472 WHEN OTHERS
4473 THEN
4474 EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
4475
4476 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_JRAD_DOC_ERR', 'JRADDOC', p_old_document_name, 'SQLERRM', SQLERRM);
4477 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTOJRADREPOS', SQLCODE);
4478 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4479
4480 RAISE;
4481 END insert_into_repository;
4482
4483 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
4484 -----collect from cz_ui_pages
4485 PROCEDURE bulk_collect_ui_pages
4486 IS
4487 l_cz_ui_pages_ui_def_tbl cz_pb_mgr.t_ref;
4488 l_cz_ui_pages_jrad_doc_tbl varchar_tbl_type;
4489 l_cz_ui_pages_capt_id_tbl cz_pb_mgr.t_ref;
4490 l_cz_page_stat_templ_tbl cz_pb_mgr.t_ref;
4491 l_cz_page_stat_uidef_tbl cz_pb_mgr.t_ref;
4492 l_cz_ui_pages_pgtmplid_tbl cz_pb_mgr.t_ref;
4493 l_cz_ui_pages_pgtmplui_tbl cz_pb_mgr.t_ref;
4494 l_cz_ui_pages_dis_cond_tbl cz_pb_mgr.t_ref;
4495 l_cz_ui_pages_enb_cond_tbl cz_pb_mgr.t_ref;
4496 l_cz_ui_pages_expl_node_tbl cz_pb_mgr.t_ref;
4497 l_rec_count NUMBER;
4498 BEGIN
4499 pbdebug := 22029;
4500
4501 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4502 THEN
4503 cz_pb_mgr.g_cz_ui_pages_ui_def_ref.DELETE;
4504 cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.DELETE;
4505 cz_pb_mgr.g_cz_ui_pages_capt_id_ref.DELETE;
4506 cz_pb_mgr.g_pages_ui_def_old_ref.DELETE;
4507 cz_pb_mgr.g_cz_ui_old_jrad_doc_ref.DELETE;
4508 -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
4509 -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
4510 cz_pb_mgr.g_cz_ui_pages_stat_templ.DELETE;
4511 cz_pb_mgr.g_cz_ui_pages_stat_ui.DELETE;
4512 cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
4513 cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
4514 cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl.DELETE;
4515 cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl.DELETE;
4516 cz_pb_mgr.g_cz_ui_pages_expl_tbl.DELETE;
4517
4518 FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4519 LOOP
4520 l_cz_ui_pages_ui_def_tbl.DELETE;
4521 l_cz_ui_pages_jrad_doc_tbl.DELETE;
4522 l_cz_ui_pages_capt_id_tbl.DELETE;
4523 l_cz_page_stat_templ_tbl.DELETE;
4524 l_cz_page_stat_uidef_tbl.DELETE;
4525 l_cz_ui_pages_pgtmplid_tbl.DELETE;
4526 l_cz_ui_pages_pgtmplui_tbl.DELETE;
4527 l_cz_ui_pages_dis_cond_tbl.DELETE;
4528 l_cz_ui_pages_enb_cond_tbl.DELETE;
4529 l_cz_ui_pages_expl_node_tbl.DELETE;
4530
4531 SELECT ui_def_id, jrad_doc, caption_text_id, page_status_template_id
4532 ,page_status_templ_uidef_id, outer_page_template_id, outer_page_templ_uidef_id, display_condition_id
4533 ,enabled_condition_id, pagebase_expl_node_id
4534 BULK COLLECT INTO l_cz_ui_pages_ui_def_tbl, l_cz_ui_pages_jrad_doc_tbl, l_cz_ui_pages_capt_id_tbl, l_cz_page_stat_templ_tbl
4535 ,l_cz_page_stat_uidef_tbl, l_cz_ui_pages_pgtmplid_tbl, l_cz_ui_pages_pgtmplui_tbl, l_cz_ui_pages_dis_cond_tbl
4536 ,l_cz_ui_pages_enb_cond_tbl, l_cz_ui_pages_expl_node_tbl
4537 FROM cz_ui_pages
4538 WHERE cz_ui_pages.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_pages.deleted_flag = record_not_deleted;
4539
4540 IF (l_cz_ui_pages_ui_def_tbl.COUNT > 0)
4541 THEN
4542 l_rec_count := cz_pb_mgr.g_pages_ui_def_old_ref.COUNT;
4543
4544 FOR uidefref IN l_cz_ui_pages_ui_def_tbl.FIRST .. l_cz_ui_pages_ui_def_tbl.LAST
4545 LOOP
4546 l_rec_count := l_rec_count + 1;
4547 -- cz_pb_mgr.g_cz_ui_pages_ui_def_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
4548 -- cz_pb_mgr.v_intl_text_ui_tbl(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
4549 cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
4550 cz_pb_mgr.g_cz_ui_pages_capt_id_ref(l_rec_count) := l_cz_ui_pages_capt_id_tbl(uidefref);
4551 cz_pb_mgr.g_pages_ui_def_old_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
4552 cz_pb_mgr.g_cz_ui_old_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
4553 cz_pb_mgr.g_cz_ui_pages_stat_templ(l_rec_count) := l_cz_page_stat_templ_tbl(uidefref);
4554 cz_pb_mgr.g_cz_ui_pages_stat_ui(l_rec_count) := l_cz_page_stat_uidef_tbl(uidefref);
4555 -- cz_pb_mgr.v_intl_text_model_tbl(l_rec_count) := -1;
4556 cz_pb_mgr.g_cz_uipg_tmplid_tbl(l_rec_count) := l_cz_ui_pages_pgtmplid_tbl(uidefref);
4557 cz_pb_mgr.g_cz_uipg_tmplui_tbl(l_rec_count) := l_cz_ui_pages_pgtmplui_tbl(uidefref);
4558 cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl(l_rec_count) := l_cz_ui_pages_dis_cond_tbl(uidefref);
4559 cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl(l_rec_count) := l_cz_ui_pages_enb_cond_tbl(uidefref);
4560 cz_pb_mgr.g_cz_ui_pages_expl_tbl(l_rec_count) := l_cz_ui_pages_expl_node_tbl(uidefref);
4561 END LOOP;
4562 END IF;
4563 END LOOP;
4564 END IF;
4565 EXCEPTION
4566 WHEN NO_DATA_FOUND
4567 THEN
4568 NULL;
4569 WHEN OTHERS
4570 THEN
4571 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_pages', 'SQLERRM', SQLERRM);
4572 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGES', SQLCODE);
4573 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4574 RAISE;
4575 END bulk_collect_ui_pages;
4576
4577 -------------------------------------------------------------------------
4578 -------insert into cz_ui_pages
4579 PROCEDURE insert_into_ui_pages
4580 IS
4581 rec_count NUMBER := 0;
4582 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4583 BEGIN
4584 pbdebug := 22030;
4585
4586 IF (cz_pb_mgr.g_pages_ui_def_old_ref.COUNT > 0)
4587 THEN
4588 ----resolve ui_def_id of ui pages
4589 resolve_ids(cz_pb_mgr.g_pages_ui_def_old_ref,cz_pb_mgr.g_cz_ui_pages_ui_def_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui pages');
4590
4591 -- resolve page status and outer page templates
4592 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
4593 resolve_tmpl_ui_defs(g_cz_ui_pages_stat_ui, g_cz_ui_pages_stat_ui, g_cz_ui_pages_stat_templ, v_cz_ui_defs_idx_ref, 'pg status templ uidefs of ui pages');
4594 resolve_ids(cz_pb_mgr.g_cz_ui_pages_stat_templ, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'pg stat templs of ui pages', ENTITY_TYPE_UCT);
4595 resolve_tmpl_ui_defs(g_cz_uipg_tmplui_tbl, g_cz_uipg_tmplui_tbl,g_cz_uipg_tmplid_tbl, v_cz_ui_defs_idx_ref, 'outer pg templ uidefs of ui pages');
4596 resolve_ids(cz_pb_mgr.g_cz_uipg_tmplid_tbl, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'outer page tmpl id of ui pages', ENTITY_TYPE_UCT);
4597 END IF;
4598
4599 ----caption ids of ui pages
4600 resolve_intl_texts(cz_pb_mgr.g_cz_ui_pages_capt_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'caption ids of cz ui pages');
4601
4602 resolve_ids(cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'disabled condition of ui pages');
4603 resolve_ids(cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'enabled condition of ui pages');
4604 resolve_ids(cz_pb_mgr.g_cz_ui_pages_expl_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl node id of ui pages');
4605 plsql_table_list.DELETE;
4606 rec_count := 1;
4607 plsql_table_list(rec_count).col_name := 'ui_def_id';
4608 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_ui_def_ref';
4609 rec_count := rec_count + 1;
4610 plsql_table_list(rec_count).col_name := 'jrad_doc';
4611 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref';
4612 rec_count := rec_count + 1;
4613 plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPLATE_ID';
4614 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_templ';
4615 rec_count := rec_count + 1;
4616 plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPL_UIDEF_ID';
4617 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_ui';
4618 rec_count := rec_count + 1;
4619 plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPLATE_ID';
4620 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplid_tbl';
4621 rec_count := rec_count + 1;
4622 plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPL_UIDEF_ID';
4623 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplui_tbl';
4624 rec_count := rec_count + 1;
4625 plsql_table_list(rec_count).col_name := 'DISPLAY_CONDITION_ID';
4626 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl';
4627 rec_count := rec_count + 1;
4628 plsql_table_list(rec_count).col_name := 'ENABLED_CONDITION_ID';
4629 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl';
4630 rec_count := rec_count + 1;
4631 plsql_table_list(rec_count).col_name := 'PAGEBASE_EXPL_NODE_ID';
4632 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_expl_tbl';
4633 rec_count := rec_count + 1;
4634 plsql_table_list(rec_count).col_name := 'CAPTION_TEXT_ID';
4635 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_capt_id_ref';
4636 insert_into_table('cz_ui_pages'
4637 ,'ui_def_id'
4638 ,'jrad_doc'
4639 ,cz_pb_mgr.v_db_link
4640 ,plsql_table_list
4641 ,'cz_pb_mgr.g_pages_ui_def_old_ref'
4642 ,'cz_pb_mgr.g_cz_ui_old_jrad_doc_ref'
4643 ,cz_pb_mgr.g_pages_ui_def_old_ref
4644 ,cz_pb_mgr.g_cz_ui_old_jrad_doc_ref
4645 );
4646 END IF;
4647 END insert_into_ui_pages;
4648
4649 ----------------------------------------------------------
4650 ---------bulk collect ui page sets
4651 PROCEDURE bulk_collect_page_sets
4652 IS
4653 l_rec_count NUMBER := 0;
4654 l_page_sets_ui_tbl cz_pb_mgr.t_ref;
4655 l_page_sets_pg_tbl cz_pb_mgr.t_ref;
4656 l_pagebase_expl_tbl cz_pb_mgr.t_ref;
4657 l_train_jrad_doc_tbl varchar_type_tbl;
4658 BEGIN
4659 pbdebug := 22031;
4660
4661 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4662 THEN
4663 cz_pb_mgr.g_page_sets_ui_old_ref.DELETE;
4664 cz_pb_mgr.g_page_sets_ui_ref.DELETE;
4665 cz_pb_mgr.g_page_sets_pg_tbl.DELETE;
4666 cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
4667 cz_pb_mgr.g_page_sets_expl_tbl.DELETE;
4668
4669 FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4670 LOOP
4671 SELECT ui_def_id, page_set_id, train_jrad_doc, pagebase_expl_node_id
4672 BULK COLLECT INTO l_page_sets_ui_tbl, l_page_sets_pg_tbl, l_train_jrad_doc_tbl, l_pagebase_expl_tbl
4673 FROM cz_ui_page_sets
4674 WHERE cz_ui_page_sets.deleted_flag = record_not_deleted AND cz_ui_page_sets.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef);
4675
4676 IF (l_page_sets_ui_tbl.COUNT > 0)
4677 THEN
4678 l_rec_count := cz_pb_mgr.g_page_sets_ui_old_ref.COUNT;
4679
4680 FOR pageset IN l_page_sets_ui_tbl.FIRST .. l_page_sets_ui_tbl.LAST
4681 LOOP
4682 l_rec_count := l_rec_count + 1;
4683 cz_pb_mgr.g_page_sets_ui_old_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4684 --cz_pb_mgr.g_page_sets_ui_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4685 cz_pb_mgr.g_page_sets_pg_tbl(l_rec_count) := l_page_sets_pg_tbl(pageset);
4686 cz_pb_mgr.g_page_sets_jrad_doc_ref(l_rec_count) := l_train_jrad_doc_tbl(pageset);
4687 cz_pb_mgr.g_page_sets_expl_tbl(l_rec_count) := l_pagebase_expl_tbl(pageset);
4688 END LOOP;
4689 END IF;
4690 END LOOP;
4691 END IF;
4692 EXCEPTION
4693 WHEN NO_DATA_FOUND
4694 THEN
4695 NULL;
4696 WHEN OTHERS
4697 THEN
4698 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4699 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGESETS', SQLCODE);
4700 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4701 RAISE;
4702 END bulk_collect_page_sets;
4703
4704 ---------------------------------------------------------------
4705 ----insert into cz_ui_page_sets
4706 PROCEDURE insert_into_ui_page_sets
4707 IS
4708 rec_count NUMBER := 0;
4709 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4710 BEGIN
4711 IF (cz_pb_mgr.g_page_sets_ui_old_ref.COUNT > 0)
4712 THEN
4713 pbdebug := 22032;
4714 ----resolve ui_def_id of page sets
4715 resolve_ids(cz_pb_mgr.g_page_sets_ui_old_ref,cz_pb_mgr.g_page_sets_ui_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of page sets');
4716 resolve_ids(cz_pb_mgr.g_page_sets_expl_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl node id of page sets');
4717 plsql_table_list.DELETE;
4718 rec_count := 1;
4719 plsql_table_list(rec_count).col_name := 'ui_def_id';
4720 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_ui_ref';
4721 rec_count := rec_count + 1;
4722 plsql_table_list(rec_count).col_name := 'train_jrad_doc';
4723 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_jrad_doc_ref';
4724 rec_count := rec_count + 1;
4725 plsql_table_list(rec_count).col_name := 'pagebase_expl_node_id';
4726 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_expl_tbl';
4727 insert_into_table('cz_ui_page_sets'
4728 ,'ui_def_id'
4729 ,'page_set_id'
4730 ,cz_pb_mgr.v_db_link
4731 ,plsql_table_list
4732 ,'cz_pb_mgr.g_page_sets_ui_old_ref'
4733 ,'cz_pb_mgr.g_page_sets_pg_tbl'
4734 ,cz_pb_mgr.g_page_sets_ui_old_ref
4735 ,cz_pb_mgr.g_page_sets_pg_tbl
4736 );
4737 END IF;
4738 EXCEPTION
4739 WHEN OTHERS
4740 THEN
4741 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4742 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGESETS', SQLCODE);
4743 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4744 RAISE;
4745 END insert_into_ui_page_sets;
4746
4747 ------------------------------------------------------------------------
4748 -----bulk collect from page refs
4749 PROCEDURE bulk_collect_page_refs
4750 IS
4751 l_page_refs_set_id_tbl cz_pb_mgr.t_ref;
4752 l_page_refs_ui_def_tbl cz_pb_mgr.t_ref;
4753 l_page_refs_pg_ref_id_tbl cz_pb_mgr.t_ref;
4754 l_page_refs_cond_id_tbl cz_pb_mgr.t_ref;
4755 l_page_refs_capt_id_tbl cz_pb_mgr.t_ref;
4756 l_page_refs_prop_id_tbl cz_pb_mgr.t_ref;
4757 l_page_refs_tgt_ui_tbl cz_pb_mgr.t_ref;
4758 l_page_refs_tgt_pg_set_tbl cz_pb_mgr.t_ref;
4759 l_page_refs_tgt_pg_id_tbl cz_pb_mgr.t_ref;
4760 l_page_refs_pg_set_tbl cz_pb_mgr.t_ref;
4761 l_page_refs_pg_ref_tbl cz_pb_mgr.t_ref;
4762 l_page_refs_tgt_expl_tbl cz_pb_mgr.t_ref;
4763 l_page_refs_cpt_rule_tbl cz_pb_mgr.t_ref;
4764 rec_count NUMBER := 0;
4765 BEGIN
4766 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4767 THEN
4768 cz_pb_mgr.g_page_refs_ui_def_old_ref.DELETE;
4769 cz_pb_mgr.g_page_refs_ui_def_new_ref.DELETE;
4770 cz_pb_mgr.g_page_refs_cond_id_ref.DELETE;
4771 cz_pb_mgr.g_page_refs_capt_id_ref.DELETE;
4772 cz_pb_mgr.g_page_refs_tgt_ui_ref.DELETE;
4773 cz_pb_mgr.g_page_refs_pg_set_ref.DELETE;
4774 cz_pb_mgr.g_page_refs_pg_ref_ref.DELETE;
4775 -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
4776 -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
4777 cz_pb_mgr.g_page_refs_tgt_expl_tbl.DELETE;
4778 cz_pb_mgr.g_page_refs_cpt_rule_tbl.DELETE;
4779 pbdebug := 22033;
4780
4781 FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4782 LOOP
4783 l_page_refs_ui_def_tbl.DELETE;
4784 l_page_refs_cond_id_tbl.DELETE;
4785 l_page_refs_capt_id_tbl.DELETE;
4786 l_page_refs_tgt_ui_tbl.DELETE;
4787 l_page_refs_tgt_expl_tbl.DELETE;
4788 l_page_refs_cpt_rule_tbl.DELETE;
4789
4790 SELECT ui_def_id, page_set_id, page_ref_id, condition_id, caption_text_id
4791 ,target_ui_def_id, target_expl_node_id, caption_rule_id
4792 BULK COLLECT INTO l_page_refs_ui_def_tbl, l_page_refs_pg_set_tbl, l_page_refs_pg_ref_tbl, l_page_refs_cond_id_tbl, l_page_refs_capt_id_tbl
4793 ,l_page_refs_tgt_ui_tbl, l_page_refs_tgt_expl_tbl, l_page_refs_cpt_rule_tbl
4794 FROM cz_ui_page_refs
4795 WHERE cz_ui_page_refs.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_page_refs.deleted_flag = record_not_deleted;
4796
4797 IF (l_page_refs_ui_def_tbl.COUNT > 0)
4798 THEN
4799 rec_count := cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT;
4800
4801 FOR pageref IN l_page_refs_ui_def_tbl.FIRST .. l_page_refs_ui_def_tbl.LAST
4802 LOOP
4803 rec_count := rec_count + 1;
4804 -- cz_pb_mgr.g_page_refs_ui_def_new_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4805 cz_pb_mgr.g_page_refs_ui_def_old_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4806 -- cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_page_refs_ui_def_tbl(pageref);
4807 -- cz_pb_mgr.v_intl_text_model_tbl(rec_count) := -1;
4808 cz_pb_mgr.g_page_refs_pg_set_ref(rec_count) := l_page_refs_pg_set_tbl(pageref);
4809 cz_pb_mgr.g_page_refs_pg_ref_ref(rec_count) := l_page_refs_pg_ref_tbl(pageref);
4810 cz_pb_mgr.g_page_refs_cond_id_ref(rec_count) := l_page_refs_cond_id_tbl(pageref);
4811 cz_pb_mgr.g_page_refs_capt_id_ref(rec_count) := l_page_refs_capt_id_tbl(pageref);
4812 cz_pb_mgr.g_page_refs_tgt_ui_ref(rec_count) := l_page_refs_tgt_ui_tbl(pageref);
4813 cz_pb_mgr.g_page_refs_tgt_expl_tbl(rec_count) := l_page_refs_tgt_expl_tbl(pageref);
4814 cz_pb_mgr.g_page_refs_cpt_rule_tbl(rec_count) := l_page_refs_cpt_rule_tbl(pageref);
4815 END LOOP;
4816 END IF;
4817 END LOOP;
4818 END IF;
4819 EXCEPTION
4820 WHEN NO_DATA_FOUND
4821 THEN
4822 NULL;
4823 WHEN OTHERS
4824 THEN
4825 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4826 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGEREFS', SQLCODE);
4827 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4828 RAISE;
4829 END bulk_collect_page_refs;
4830
4831 -------------------------------------------------
4832 ------insert into page refs
4833 PROCEDURE insert_into_ui_page_refs
4834 IS
4835 rec_count NUMBER := 0;
4836 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4837 BEGIN
4838 IF (cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT > 0)
4839 THEN
4840 pbdebug := 22034;
4841 ----resolve ui_def_id
4842 resolve_ids(cz_pb_mgr.g_page_refs_ui_def_old_ref,cz_pb_mgr.g_page_refs_ui_def_new_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of page refs');
4843
4844 ---bug14004074. Should not resolve caption_rule_id of page refs as this will have always a seeded value.
4845 --resolve_ids(cz_pb_mgr.g_page_refs_cpt_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'caption rule id of page refs');
4846
4847 ---create rules for g_page_refs_cond_id_ref
4848 resolve_ids(cz_pb_mgr.g_page_refs_cond_id_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'condition id of page refs');
4849 ----caption ids of ui pages
4850 -----insert_intl_texts(cz_pb_mgr.g_page_refs_capt_id_ref,'caption ids of cz ui page refs');
4851 resolve_intl_texts(cz_pb_mgr.g_page_refs_capt_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'caption ids of cz ui page refs');
4852 ----resolve expl id
4853 resolve_ids(cz_pb_mgr.g_page_refs_tgt_expl_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl ids of page refs');
4854 plsql_table_list.DELETE;
4855 rec_count := 1;
4856 plsql_table_list(rec_count).col_name := 'ui_def_id';
4857 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_ui_def_new_ref';
4858 rec_count := rec_count + 1;
4859 plsql_table_list(rec_count).col_name := 'caption_text_id';
4860 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_capt_id_ref';
4861 rec_count := rec_count + 1;
4862 plsql_table_list(rec_count).col_name := 'target_ui_def_id';
4863 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_ui_ref';
4864 rec_count := rec_count + 1;
4865 plsql_table_list(rec_count).col_name := 'target_expl_node_id';
4866 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_expl_tbl';
4867 rec_count := rec_count + 1;
4868 plsql_table_list(rec_count).col_name := 'caption_rule_id';
4869 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cpt_rule_tbl';
4870 rec_count := rec_count + 1;
4871 plsql_table_list(rec_count).col_name := 'condition_id';
4872 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cond_id_ref';
4873 -- should call resolve_ids instead
4874 resolve_ref_ids_not_found(cz_pb_mgr.g_page_refs_ui_def_new_ref
4875 ,cz_pb_mgr.v_cz_ui_defs_old_ref
4876 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4877 ,cz_pb_mgr.g_page_refs_tgt_ui_ref
4878 ,'cz_ui_page_refs.target_ui_def_id'
4879 ,cz_pb_mgr.v_status_code
4880 );
4881 insert_into_table('cz_ui_page_refs'
4882 ,'ui_def_id'
4883 ,'page_set_id'
4884 ,'page_ref_id'
4885 ,cz_pb_mgr.v_db_link
4886 ,plsql_table_list
4887 ,'cz_pb_mgr.g_page_refs_ui_def_old_ref'
4888 ,'cz_pb_mgr.g_page_refs_pg_set_ref'
4889 ,'cz_pb_mgr.g_page_refs_pg_ref_ref'
4890 ,cz_pb_mgr.g_page_refs_ui_def_old_ref
4891 ,cz_pb_mgr.g_page_refs_pg_set_ref
4892 ,cz_pb_mgr.g_page_refs_pg_ref_ref
4893 );
4894 END IF;
4895 EXCEPTION
4896 WHEN OTHERS
4897 THEN
4898 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4899 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGEREFS', SQLCODE);
4900 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4901 RAISE;
4902 END insert_into_ui_page_refs;
4903
4904 --------------------------------------------------
4905 -----bulk collect from ui refs
4906 PROCEDURE bulk_collect_ui_refs
4907 IS
4908 l_ui_refs_ui_def_tbl cz_pb_mgr.t_ref;
4909 l_ui_refs_ref_ui_def_tbl cz_pb_mgr.t_ref;
4910 l_ui_refs_expl_id_tbl cz_pb_mgr.t_ref;
4911 rec_count NUMBER := 0;
4912 BEGIN
4913 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4914 THEN
4915 cz_pb_mgr.g_ui_refs_old_ui_def_ref.DELETE;
4916 cz_pb_mgr.g_ui_refs_new_ui_def_ref.DELETE;
4917 cz_pb_mgr.g_ui_refs_ref_ui_def_ref.DELETE;
4918 cz_pb_mgr.g_ui_refs_expl_id_ref.DELETE;
4919 cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref.DELETE;
4920 cz_pb_mgr.g_ui_refs_expl_id_old_ref.DELETE;
4921
4922 FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
4923 LOOP
4924 l_ui_refs_ui_def_tbl.DELETE;
4925 l_ui_refs_ref_ui_def_tbl.DELETE;
4926 l_ui_refs_expl_id_tbl.DELETE;
4927
4928 SELECT ui_def_id, ref_ui_def_id, model_ref_expl_id
4929 BULK COLLECT INTO l_ui_refs_ui_def_tbl, l_ui_refs_ref_ui_def_tbl, l_ui_refs_expl_id_tbl
4930 FROM cz_ui_refs
4931 WHERE cz_ui_refs.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_refs.deleted_flag = record_not_deleted;
4932
4933 IF (l_ui_refs_ui_def_tbl.COUNT > 0)
4934 THEN
4935 rec_count := cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT;
4936
4937 FOR uiref IN l_ui_refs_ui_def_tbl.FIRST .. l_ui_refs_ui_def_tbl.LAST
4938 LOOP
4939 rec_count := rec_count + 1;
4940 cz_pb_mgr.g_ui_refs_old_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4941 -- cz_pb_mgr.g_ui_refs_new_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4942 cz_pb_mgr.g_ui_refs_ref_ui_def_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4943 cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4944 cz_pb_mgr.g_ui_refs_expl_id_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4945 cz_pb_mgr.g_ui_refs_expl_id_old_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4946 END LOOP;
4947 END IF;
4948 END LOOP;
4949 END IF;
4950 EXCEPTION
4951 WHEN NO_DATA_FOUND
4952 THEN
4953 NULL;
4954 WHEN OTHERS
4955 THEN
4956 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
4957 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIREFS', SQLCODE);
4958 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4959 RAISE;
4960 END bulk_collect_ui_refs;
4961
4962 -----------------------------------------------------------------
4963 ------insert into cz_ui_refs
4964 PROCEDURE insert_into_ui_refs
4965 IS
4966 rec_count NUMBER := 0;
4967 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4968 BEGIN
4969 IF (cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT > 0)
4970 THEN
4971 ----resolve ui_def_id
4972 resolve_ids(cz_pb_mgr.g_ui_refs_old_ui_def_ref,cz_pb_mgr.g_ui_refs_new_ui_def_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui refs');
4973 ----resolve model ref expl id
4974 resolve_ids(cz_pb_mgr.g_ui_refs_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl ids of page refs');
4975 plsql_table_list.DELETE;
4976 rec_count := 1;
4977 plsql_table_list(rec_count).col_name := 'ui_def_id';
4978 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_new_ui_def_ref';
4979 rec_count := rec_count + 1;
4980 plsql_table_list(rec_count).col_name := 'ref_ui_def_id';
4981 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_ref_ui_def_ref';
4982 rec_count := rec_count + 1;
4983 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
4984 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_expl_id_ref';
4985 -- should call resolve_ids instead
4986 resolve_ref_ids_not_found(cz_pb_mgr.g_ui_refs_new_ui_def_ref
4987 ,cz_pb_mgr.v_cz_ui_defs_old_ref
4988 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4989 ,cz_pb_mgr.g_ui_refs_ref_ui_def_ref
4990 ,'cz_ui_refs.ref_ui_def_id'
4991 ,cz_pb_mgr.v_status_code
4992 );
4993 insert_into_table('cz_ui_refs'
4994 ,'ui_def_id'
4995 ,'ref_ui_def_id'
4996 ,'model_ref_expl_id'
4997 ,cz_pb_mgr.v_db_link
4998 ,plsql_table_list
4999 ,'cz_pb_mgr.g_ui_refs_old_ui_def_ref'
5000 ,'cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref'
5001 ,'cz_pb_mgr.g_ui_refs_expl_id_old_ref'
5002 ,cz_pb_mgr.g_ui_refs_old_ui_def_ref
5003 ,cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref
5004 ,cz_pb_mgr.g_ui_refs_expl_id_old_ref
5005 );
5006 END IF;
5007
5008 COMMIT;
5009 EXCEPTION
5010 WHEN OTHERS
5011 THEN
5012 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
5013 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIREFS', SQLCODE);
5014 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5015 RAISE;
5016 END;
5017
5018 ------------------------------------------------------------
5019 -----bulk collect from ui ps maps
5020 PROCEDURE bulk_collect_ui_ps_maps
5021 IS
5022 l_ui_ps_maps_ui_def_tbl cz_pb_mgr.t_ref;
5023 l_ui_ps_maps_ctrl_tmp_tbl cz_pb_mgr.t_ref;
5024 l_ui_ps_maps_page_id_tbl cz_pb_mgr.t_ref;
5025 l_ui_ps_maps_expl_id_tbl cz_pb_mgr.t_ref;
5026 l_ui_ps_maps_elem_sig_tbl cz_pb_mgr.t_ref;
5027 l_ui_ps_maps_ctrl_temp_ui_tbl cz_pb_mgr.t_ref;
5028 l_ui_ps_maps_element_tbl varchar_type_tbl;
5029 l_ui_ps_maps_tgt_pg_ui_def_tbl cz_pb_mgr.t_ref;
5030 rec_count NUMBER := 0;
5031 BEGIN
5032 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
5033 THEN
5034 cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.DELETE;
5035 cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref.DELETE;
5036 cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref.DELETE;
5037 cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
5038 cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
5039 cz_pb_mgr.g_ui_ps_maps_expl_id_tbl.DELETE;
5040 cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl.DELETE;
5041 cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl.DELETE;
5042 cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
5043
5044 FOR uidef IN cz_pb_mgr.v_cz_ui_defs_old_oa_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_oa_ref.LAST
5045 LOOP
5046 l_ui_ps_maps_ui_def_tbl.DELETE;
5047 l_ui_ps_maps_ctrl_tmp_tbl.DELETE;
5048 l_ui_ps_maps_page_id_tbl.DELETE;
5049 l_ui_ps_maps_element_tbl.DELETE;
5050 l_ui_ps_maps_expl_id_tbl.DELETE;
5051 l_ui_ps_maps_ctrl_temp_ui_tbl.DELETE;
5052 l_ui_ps_maps_elem_sig_tbl.DELETE;
5053 l_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
5054
5055 BEGIN
5056 SELECT ui_def_id, ctrl_template_id, page_id, element_id
5057 ,model_ref_expl_id, ctrl_template_ui_def_id, element_signature_id, target_page_ui_def_id
5058 BULK COLLECT INTO l_ui_ps_maps_ui_def_tbl, l_ui_ps_maps_ctrl_tmp_tbl, l_ui_ps_maps_page_id_tbl, l_ui_ps_maps_element_tbl
5059 ,l_ui_ps_maps_expl_id_tbl, l_ui_ps_maps_ctrl_temp_ui_tbl, l_ui_ps_maps_elem_sig_tbl, l_ui_ps_maps_tgt_pg_ui_def_tbl
5060 FROM cz_ui_page_elements
5061 WHERE cz_ui_page_elements.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef)
5062 AND cz_ui_page_elements.deleted_flag = record_not_deleted;
5063 EXCEPTION
5064 WHEN NO_DATA_FOUND
5065 THEN
5066 NULL;
5067 END;
5068
5069 IF (l_ui_ps_maps_ui_def_tbl.COUNT > 0)
5070 THEN
5071 rec_count := cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT;
5072
5073 FOR uimap IN l_ui_ps_maps_ui_def_tbl.FIRST .. l_ui_ps_maps_ui_def_tbl.LAST
5074 LOOP
5075 rec_count := rec_count + 1;
5076 cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
5077 -- cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
5078 cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref(rec_count) := l_ui_ps_maps_ctrl_tmp_tbl(uimap);
5079 cz_pb_mgr.g_ui_ps_maps_page_id_tbl(rec_count) := l_ui_ps_maps_page_id_tbl(uimap);
5080 cz_pb_mgr.g_ui_ps_maps_element_tbl(rec_count) := l_ui_ps_maps_element_tbl(uimap);
5081 cz_pb_mgr.g_ui_ps_maps_expl_id_tbl(rec_count) := l_ui_ps_maps_expl_id_tbl(uimap);
5082 cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl(rec_count) := l_ui_ps_maps_ctrl_temp_ui_tbl(uimap);
5083 cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl(rec_count) := l_ui_ps_maps_elem_sig_tbl(uimap);
5084 cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl(rec_count) := l_ui_ps_maps_tgt_pg_ui_def_tbl(uimap);
5085 END LOOP;
5086 END IF;
5087 END LOOP;
5088 END IF;
5089 EXCEPTION
5090 WHEN OTHERS
5091 THEN
5092 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_ps_maps', 'SQLERRM', SQLERRM);
5093 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPSMAPS', SQLCODE);
5094 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5095 RAISE;
5096 END bulk_collect_ui_ps_maps;
5097
5098 ------------------------------------------------------------------------
5099 ----insert into ui_ps_maps
5100 PROCEDURE insert_ui_ps_maps
5101 IS
5102 rec_count NUMBER := 0;
5103 plsql_table_list cz_pb_mgr.col_plsql_table_list;
5104 BEGIN
5105 IF (cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT > 0)
5106 THEN
5107 ----resolve ui_def_id
5108 resolve_ids(cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref,cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui ps maps');
5109
5110 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
5111 resolve_tmpl_ui_defs(cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl, cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref, 'ctrl tmp ui def ids of ui ps maps');
5112 resolve_ids(cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'ctrl template id of ui ps maps', ENTITY_TYPE_UCT);
5113 END IF;
5114
5115 resolve_ids(cz_pb_mgr.g_ui_ps_maps_expl_id_tbl, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of page elements');
5116 resolve_ids(cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl, cz_pb_mgr.v_sig_idx_ref, 'element_signature id of page elements', ENTITY_TYPE_SIGNATURE);
5117
5118 plsql_table_list.DELETE;
5119 rec_count := 1;
5120 plsql_table_list(rec_count).col_name := 'ui_def_id';
5121 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref';
5122 rec_count := rec_count + 1;
5123 plsql_table_list(rec_count).col_name := 'ctrl_template_id';
5124 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref';
5125 rec_count := rec_count + 1;
5126 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
5127 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_expl_id_tbl';
5128 rec_count := rec_count + 1;
5129 plsql_table_list(rec_count).col_name := 'ctrl_template_ui_def_id';
5130 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl';
5131 rec_count := rec_count + 1;
5132 plsql_table_list(rec_count).col_name := 'element_signature_id';
5133 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl';
5134 rec_count := rec_count + 1;
5135 plsql_table_list(rec_count).col_name := 'TARGET_PAGE_UI_DEF_ID';
5136 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl';
5137 -- should call resolve_ids instead
5138 resolve_ref_ids_not_found(cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref
5139 ,cz_pb_mgr.v_cz_ui_defs_old_ref
5140 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
5141 ,cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl
5142 ,'cz_ui_page_elements.target_page_ui_def_id'
5143 ,cz_pb_mgr.v_status_code
5144 );
5145 insert_into_table('cz_ui_page_elements'
5146 ,'ui_def_id'
5147 ,'page_id'
5148 ,'element_id'
5149 ,cz_pb_mgr.v_db_link
5150 ,plsql_table_list
5151 ,'cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref'
5152 ,'cz_pb_mgr.g_ui_ps_maps_page_id_tbl'
5153 ,'cz_pb_mgr.g_ui_ps_maps_element_tbl'
5154 ,cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref
5155 ,cz_pb_mgr.g_ui_ps_maps_page_id_tbl
5156 ,cz_pb_mgr.g_ui_ps_maps_element_tbl
5157 );
5158 END IF;
5159 EXCEPTION
5160 WHEN OTHERS
5161 THEN
5162 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_elements', 'SQLERRM', SQLERRM);
5163 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPSMAPS', SQLCODE);
5164 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5165 RAISE;
5166 END insert_ui_ps_maps;
5167 ------------------------------------------------------------
5168 PROCEDURE insert_template_elements(
5169 p_template_id IN NUMBER
5170 ,p_ui_def_id IN NUMBER
5171 ,p_element_type IN NUMBER
5172 ,p_element_id IN NUMBER
5173 ,p_persistent_element_id IN NUMBER
5174 ,p_link_name IN VARCHAR2
5175 )
5176 IS
5177 l_str VARCHAR2(2000);
5178
5179 --Bug 5525718 - In case of migration the ui_def_id should be 0
5180
5181 l_ui_def_id NUMBER := 1;
5182 l_persistent_element_id CZ_UI_TEMPLATE_ELEMENTS.persistent_element_id%TYPE := p_persistent_element_id;
5183
5184 BEGIN
5185
5186 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
5187 l_ui_def_id := 0;
5188 l_persistent_element_id := p_element_id;
5189 END IF;
5190
5191 l_str :=
5192 'insert into cz_ui_template_elements'
5193 || p_link_name
5194 || ' (TEMPLATE_ID,UI_DEF_ID,'
5195 || ' '
5196 || 'ELEMENT_TYPE,ELEMENT_ID,PERSISTENT_ELEMENT_ID,DELETED_FLAG,seeded_flag)'
5197 || ' '
5198 || 'VALUES (:1,:2,:3,:4,:5,''0'',''0'') ';
5199
5200 EXECUTE IMMEDIATE l_str
5201 USING p_template_id,l_ui_def_id, p_element_type, p_element_id, l_persistent_element_id;
5202 EXCEPTION
5203 WHEN OTHERS
5204 THEN
5205 RAISE;
5206 END insert_template_elements;
5207
5208 -----------------------------------------
5209 PROCEDURE update_template_elements(p_template_id IN NUMBER, p_ui_def_id IN NUMBER, p_link_name IN VARCHAR2)
5210 IS
5211 l_str VARCHAR2(2000);
5212 BEGIN
5213
5214 -------bug#13517253 physical delete from cz_localized_texts before deleteing the cz_ui_template_elements.
5215 ---- Else this leads to the unwanted data in this table for every template publication.
5216 -------mpothubo.
5217
5218
5219 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5220 log_timing_message('Start of update of cz_localized_texts');
5221 END IF;
5222
5223 l_str :=
5224 'DELETE FROM cz_localized_texts'
5225 || p_link_name
5226 || ' WHERE ui_def_id = :1 '
5227 || ' AND NVL(seeded_flag, ''0'') = ''0'''
5228 || ' AND deleted_flag = ''0'''
5229 || ' AND intl_text_id'
5230 || ' IN'
5231 || ' (SELECT element_id FROM cz_ui_template_elements'
5232 || p_link_name
5233 || ' WHERE element_type = ''8'''
5234 || ' AND ui_def_id= :2'
5235 || ' AND template_id = :3'
5236 || ' AND deleted_flag = ''0'''
5237 || ' AND NVL (seeded_flag,''0'') = ''0'')';
5238
5239
5240 EXECUTE IMMEDIATE l_str
5241 USING p_ui_def_id, p_ui_def_id, p_template_id ;
5242
5243 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5244 log_timing_message('No. of Records updated in cz_localized_texts (cz_ui_template_elements.element_id) : ' || sql%rowcount );
5245 log_timing_message('End of update of cz_localized_texts ');
5246 END IF;
5247
5248 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5249 log_timing_message('Start of delete of cz_ui_template_elements ');
5250 END IF;
5251
5252 l_str :=
5253 'DELETE FROM cz_ui_template_elements' || p_link_name || ' t' || ' ' || 'WHERE t.template_id = :1' || ' ' || 'AND t.ui_def_id = :2' ;
5254
5255 EXECUTE IMMEDIATE l_str
5256 USING p_template_id, p_ui_def_id;
5257
5258 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
5259 log_timing_message('No. of Records deleted in cz_ui_template_elements ' || sql%rowcount );
5260 log_timing_message('End of delete of cz_ui_template_elements ');
5261 END IF;
5262
5263 EXCEPTION
5264 WHEN OTHERS
5265 THEN
5266 RAISE;
5267 END update_template_elements;
5268
5269 -------------------------------------------
5270 PROCEDURE create_uit_publication(
5271 p_template_id IN NUMBER
5272 ,p_old_templ_id IN NUMBER
5273 ,p_source_tgt_flag IN VARCHAR2
5274 ,p_link_name IN VARCHAR2
5275 ,p_server_id IN NUMBER
5276 ,p_src_id IN NUMBER
5277 ,p_tgt_id IN NUMBER
5278 )
5279 IS
5280 l_inst_str VARCHAR2(2000);
5281 l_uit_date DATE;
5282 l_applicable_from DATE := cz_utils.epoch_begin;
5283 l_applicable_until DATE := cz_utils.epoch_end;
5284 l_status NUMBER := 0;
5285 l_ref_cursor ref_cursor;
5286 l_src_pb_id cz_model_publications.publication_id%TYPE;
5287 l_tgt_pb_id cz_model_publications.publication_id%TYPE;
5288 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
5289 BEGIN
5290 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
5291 THEN
5292 l_inst_str :=
5293 'UPDATE cz_model_publications'
5294 || p_link_name
5295 || ' t'
5296 || ' '
5297 || 'SET t.last_update_date = sysdate'
5298 || ' '
5299 || 'WHERE t.object_id = :1'
5300 || ' '
5301 || 'AND t.object_type = ''UIT'''
5302 || ' '
5303 || 'AND t.server_id = :2'
5304 || ' '
5305 || 'AND t.source_target_flag = :3'
5306 || ' '
5307 || 'AND t.deleted_flag = ''0'' ';
5308
5309 EXECUTE IMMEDIATE l_inst_str
5310 USING p_template_id, cz_pb_mgr.v_server_id, p_source_tgt_flag;
5311
5312 IF (SQL%ROWCOUNT = 0)
5313 THEN
5314 IF (p_source_tgt_flag = g_source_flag)
5315 THEN
5316 l_src_pb_id := p_src_id;
5317 l_tgt_pb_id := p_tgt_id;
5318 ELSIF(p_source_tgt_flag = g_target_flag)
5319 THEN
5320 l_src_pb_id := p_tgt_id;
5321 l_tgt_pb_id := p_src_id;
5322 END IF;
5323
5324 l_inst_str :=
5325 'INSERT INTO cz_model_publications'
5326 || p_link_name
5327 || ' '
5328 || '(PUBLICATION_ID,'
5329 || ' '
5330 || 'MODEL_ID,'
5331 || ' '
5332 || 'OBJECT_ID,'
5333 || ' '
5334 || 'OBJECT_TYPE,'
5335 || ' '
5336 || 'SERVER_ID,'
5337 || ' '
5338 || 'PUBLICATION_MODE,'
5339 || ' '
5340 || 'UI_DEF_ID,'
5341 || ' '
5342 || 'UI_STYLE,'
5343 || ' '
5344 || 'APPLICABLE_FROM,'
5345 || ' '
5346 || 'APPLICABLE_UNTIL,'
5347 || ' '
5348 || 'EXPORT_STATUS,'
5349 || ' '
5350 || 'DELETED_FLAG,'
5351 || ' '
5352 || 'MODEL_LAST_STRUCT_UPDATE,'
5353 || ' '
5354 || 'MODEL_LAST_LOGIC_UPDATE,'
5355 || ' '
5356 || 'MODEL_LAST_UPDATED,'
5357 || ' '
5358 || 'SOURCE_TARGET_FLAG,'
5359 || ' '
5360 || 'SOURCE_MODEL_ID,'
5361 || ' '
5362 || 'disabled_flag,'
5363 || ' '
5364 || 'remote_publication_id )'
5365 || ' '
5366 || 'SELECT :1,:2,:3,''UIT'',:4,'''
5367 || l_pub_mode
5368 || ''',1,7,:5,:6,''OK'',''0'',sysdate,sysdate,sysdate,:7,:8, 0,:9 FROM dual';
5369
5370 EXECUTE IMMEDIATE l_inst_str
5371 USING l_src_pb_id
5372 ,p_template_id
5373 ,p_template_id
5374 ,p_server_id
5375 ,l_applicable_from
5376 ,l_applicable_until
5377 ,p_source_tgt_flag
5378 ,p_old_templ_id
5379 ,l_tgt_pb_id;
5380 END IF;
5381 END IF;
5382
5383 COMMIT;
5384 EXCEPTION
5385 WHEN OTHERS
5386 THEN
5387 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5388 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
5389 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
5390 RAISE;
5391 END create_uit_publication;
5392
5393 --------------------------------
5394 PROCEDURE insert_template_elements
5395 IS
5396 l_src_pb_id NUMBER;
5397 l_tgt_pb_id NUMBER;
5398 rec_count NUMBER := 0;
5399
5400 l_upd_template_ids_tbl t_ref;
5401 l_str VARCHAR2(4000);
5402 l_ui_def_id NUMBER;
5403
5404 BEGIN
5405 IF ((cz_pb_mgr.l_template_id_ref.COUNT > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
5406 THEN
5407
5408 IF (CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model)
5409 THEN
5410 l_ui_def_id := 0;
5411 ELSE
5412 l_ui_def_id := 1;
5413 END IF;
5414
5415 l_str := 'update cz_ui_templates'|| CZ_PB_MGR.v_db_link || ' set template_rev_nbr=template_rev_nbr+1 '
5416 || ' where template_id=:1 and ui_def_id=:2';
5417
5418 FOR i IN l_template_id_ref.FIRST..l_template_id_ref.LAST
5419 LOOP
5420 IF NOT(l_upd_template_ids_tbl.EXISTS(l_template_id_ref(i))) THEN
5421 update_template_elements(l_template_id_ref(i), l_ui_def_id, CZ_PB_MGR.v_db_link);
5422
5423 IF l_ui_def_id = 0 THEN -- bump up template_rev_nvr only in case of Migration --
5424 EXECUTE IMMEDIATE l_str
5425 USING CZ_PB_MGR.l_template_id_ref(i), l_ui_def_id;
5426 END IF;
5427
5428 l_upd_template_ids_tbl(l_template_id_ref(i)) := i;
5429 END IF;
5430 END LOOP;
5431
5432 --Removing a call to resolve_ids here. The problem with this call is that l_element_id_ref table contains elements of all
5433 --types (rules, texts and actions), while the resolution was made against g_ui_actions_id_idx_ref, which contains only
5434 --actions. So, there was a possibility that some other element type id will get overriden. The resolution is moved to the
5435 --collect_global_actions procedure.
5436 FOR i IN CZ_PB_MGR.l_template_id_ref.FIRST .. CZ_PB_MGR.l_template_id_ref.LAST
5437 LOOP
5438 -----insert into cz_ui_template_elements
5439 insert_template_elements(CZ_PB_MGR.l_template_id_ref(i)
5440 ,l_ui_def_id
5441 ,CZ_PB_MGR.l_element_type_ref(i)
5442 ,CZ_PB_MGR.l_element_id_ref(i)
5443 ,CZ_PB_MGR.l_pers_elem_ref(i)
5444 ,CZ_PB_MGR.v_db_link
5445 );
5446 END LOOP;
5447
5448 END IF;
5449
5450 COMMIT;
5451
5452 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model AND cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
5453 THEN
5454 -- array already has the new ids
5455 -- resolve_ids(cz_pb_mgr.g_ui_templates_new_temp_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve global templates');
5456
5457 FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
5458 LOOP
5459 IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
5460 THEN
5461 SELECT cz_model_publications_s.NEXTVAL
5462 INTO l_src_pb_id
5463 FROM DUAL;
5464
5465 l_tgt_pb_id :=
5466 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
5467 , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
5468 ,cz_pb_mgr.v_oraclesequenceincr
5469 );
5470
5471 -- IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
5472 create_uit_publication(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
5473 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
5474 ,g_source_flag
5475 ,' '
5476 ,cz_pb_mgr.v_server_id
5477 ,l_src_pb_id
5478 ,l_tgt_pb_id
5479 );
5480 create_uit_publication(cz_pb_mgr.g_ui_templates_new_temp_id_ref(i)
5481 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
5482 ,g_target_flag
5483 ,cz_pb_mgr.v_db_link
5484 ,cz_pb_mgr.v_server_id
5485 ,l_src_pb_id
5486 ,l_tgt_pb_id
5487 );
5488 -- END IF;
5489 END IF;
5490 END LOOP;
5491 END IF;
5492
5493 COMMIT;
5494 EXCEPTION
5495 WHEN OTHERS
5496 THEN
5497 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5498 cz_pb_mgr.v_err_message := SQLERRM;
5499 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERT_TEMPLATE_ELEMENTS', SQLCODE);
5500 cz_pb_mgr.global_export_retcode := 2;
5501 rollback_data(cz_pb_mgr.v_db_link);
5502 RAISE;
5503 END insert_template_elements;
5504
5505 ------------------------------------------------------------
5506 ----insert into cz_ui_templates
5507 PROCEDURE insert_ui_templates
5508 IS
5509 rec_count NUMBER := 0;
5510 plsql_table_list cz_pb_mgr.col_plsql_table_list;
5511 failed_to_lock_template EXCEPTION;
5512 failed_to_unlock_template EXCEPTION;
5513 l_locked_templates cz_security_pvt.number_type_tbl;
5514 l_templates_to_lock cz_security_pvt.number_type_tbl;
5515 l_return_status VARCHAR2(1);
5516 l_msg_count NUMBER;
5517 l_msg_data VARCHAR2(2000);
5518 l_msg_index NUMBER;
5519 BEGIN
5520 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT = 0) THEN RETURN; END IF;
5521
5522 ----lock content templates to be moved
5523 FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
5524 LOOP
5525 l_templates_to_lock(l_templates_to_lock.COUNT + 1) := cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
5526 END LOOP;
5527
5528 -- bug #10417318: Calling the locking procedure as per the multiserver flag.
5529 -- If this flag is true then we need to extend locking for common entity
5530 --If the there is no multi-server flag then will continue with regular locking.
5531 IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5532 cz_security_pvt.lock_pub_template(1.0
5533 ,l_templates_to_lock
5534 ,fnd_api.g_true
5535 ,fnd_api.g_true
5536 ,cz_pb_mgr.v_server_id
5537 ,cz_pb_mgr.v_publication_id
5538 ,l_locked_templates
5539 ,l_return_status
5540 ,l_msg_count
5541 ,l_msg_data
5542 );
5543 ELSE
5544 cz_security_pvt.lock_template(1.0
5545 ,l_templates_to_lock
5546 ,fnd_api.g_true
5547 ,fnd_api.g_true
5548 ,l_locked_templates
5549 ,l_return_status
5550 ,l_msg_count
5551 ,l_msg_data
5552 );
5553 END IF;
5554
5555 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
5556 THEN
5557 RAISE failed_to_lock_template;
5558 END IF;
5559
5560 -----resplve templates
5561 --bug 5191745
5562 --before the fix, even for model migration, the ui_def_ids were being populated
5563 --with a value of '1' for CZ_UI_TEMPLATES record.
5564 --The ideal fix would have been to call 'resolve_tmpl_ui_defs' on its own, because
5565 --'resolve_tmpl_ui_defs' already checks for model migration condition
5566 --and assigns the ui_def_id correctly.
5567 --But there is a possibility that it would introduce regression in publishing
5568 --and taking the safer route here.
5569 IF (cz_pb_mgr.v_session_parameter = pub_model)
5570 THEN
5571 resolve_ids(cz_pb_mgr.g_ui_templates_ui_def_new_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'resolving ui defs of templates');
5572 ELSE
5573 resolve_tmpl_ui_defs(cz_pb_mgr.g_ui_templates_ui_def_new_ref, cz_pb_mgr.g_ui_templates_old_temp_id_ref, 'resolving ui defs of templates');
5574 END IF;
5575 -----resolve button bar templates
5576 resolve_tmpl_ui_defs(cz_pb_mgr.g_ui_templates_but_uidef_id, cz_pb_mgr.g_ui_templates_button_tbl, 'button templates ui def');
5577 resolve_ids(cz_pb_mgr.g_ui_templates_button_tbl, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'buton templates of ui templates', ENTITY_TYPE_UCT);
5578
5579 ----copy xml doc
5580 -- IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0) THEN
5581 FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
5582 LOOP
5583 IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
5584 THEN
5585 insert_into_repository(cz_pb_mgr.g_ui_templates_jrad_old_ref(doc), cz_pb_mgr.g_ui_templates_jrad_new_ref(doc), cz_pb_mgr.v_db_link);
5586 END IF;
5587 END LOOP;
5588 -- END IF;
5589
5590 -- main msg and title intl text records handled in insert_jrad_ui_intl_texts
5591 resolve_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'main message ids of cz ui templates');
5592 resolve_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'title ids of cz ui templates');
5593
5594 plsql_table_list.DELETE;
5595 rec_count := 1;
5596 plsql_table_list(rec_count).col_name := 'template_id';
5597 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
5598
5599 rec_count := rec_count + 1;
5600 plsql_table_list(rec_count).col_name := 'main_message_id';
5601 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_msg_id_ref';
5602 rec_count := rec_count + 1;
5603 plsql_table_list(rec_count).col_name := 'title_id';
5604 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_title_ref';
5605 rec_count := rec_count + 1;
5606 plsql_table_list(rec_count).col_name := 'ui_def_id';
5607 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_ui_def_new_ref';
5608 rec_count := rec_count + 1;
5609 plsql_table_list(rec_count).col_name := 'jrad_doc';
5610 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_jrad_new_ref';
5611 rec_count := rec_count + 1;
5612 plsql_table_list(rec_count).col_name := 'button_bar_template_id';
5613 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_button_tbl';
5614 rec_count := rec_count + 1;
5615 plsql_table_list(rec_count).col_name := 'button_bar_templ_uidef_id';
5616 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_but_uidef_id';
5617
5618 insert_into_table('CZ_UI_TEMPLATES'
5619 ,'template_id'
5620 ,'ui_def_id'
5621 ,cz_pb_mgr.v_db_link
5622 ,plsql_table_list
5623 ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
5624 ,'cz_pb_mgr.g_ui_templates_ui_def_old_ref'
5625 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
5626 ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
5627 );
5628 IF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
5629 refresh_global_templates(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
5630 END IF;
5631
5632 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
5633 ----------begin insert into cz_rp_entries----------------
5634 plsql_table_list.DELETE;
5635 rec_count := 1;
5636 plsql_table_list(rec_count).col_name := 'object_id';
5637 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
5638 rec_count := rec_count + 1;
5639 plsql_table_list(rec_count).col_name := 'object_type';
5640 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_obj_type';
5641 rec_count := rec_count + 1;
5642 plsql_table_list(rec_count).col_name := 'enclosing_folder';
5643 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
5644 insert_into_rp_entries('cz_rp_entries'
5645 ,'object_id'
5646 ,'object_type'
5647 ,cz_pb_mgr.v_db_link
5648 ,plsql_table_list
5649 ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
5650 ,'cz_pb_mgr.g_ui_templates_obj_type'
5651 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
5652 ,cz_pb_mgr.g_ui_templates_obj_type
5653 );
5654 ----------end insert into cz_rp_entries----------------
5655 END IF;
5656 -- END IF;
5657
5658 -- bug #10417318
5659 IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5660 cz_security_pvt.unlock_pub_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, cz_pb_mgr.v_publication_id, l_return_status, l_msg_count, l_msg_data);
5661 ELSE
5662 cz_security_pvt.unlock_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, l_return_status, l_msg_count, l_msg_data);
5663 END IF;
5664
5665 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
5666 THEN
5667 RAISE failed_to_unlock_template;
5668 END IF;
5669 EXCEPTION
5670 WHEN failed_to_lock_template
5671 THEN
5672 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5673 l_msg_index := 1;
5674
5675 WHILE l_msg_count > 0
5676 LOOP
5677 l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
5678 cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
5679 l_msg_index := l_msg_index + 1;
5680 l_msg_count := l_msg_count - 1;
5681 END LOOP;
5682
5683 -- bug #10417318
5684 IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5685 cz_security_pvt.unlock_pub_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, cz_pb_mgr.v_publication_id, l_return_status, l_msg_count, l_msg_data);
5686 ELSE
5687 cz_security_pvt.unlock_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, l_return_status, l_msg_count, l_msg_data);
5688 END IF;
5689
5690 raise_application_error('-20020', 'FAILED_TO_LOCK_TEMPLATE');
5691 WHEN failed_to_unlock_template
5692 THEN
5693 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5694 l_msg_index := 1;
5695
5696 WHILE l_msg_count > 0
5697 LOOP
5698 l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
5699 cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
5700 l_msg_index := l_msg_index + 1;
5701 l_msg_count := l_msg_count - 1;
5702 END LOOP;
5703
5704 raise_application_error('-20030', 'FAILED_TO_UNLOCK_TEMPLATE');
5705 WHEN OTHERS
5706 THEN
5707 -- bug #10417318
5708 IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
5709 cz_security_pvt.unlock_pub_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, cz_pb_mgr.v_publication_id, l_return_status, l_msg_count, l_msg_data);
5710 ELSE
5711 cz_security_pvt.unlock_template(1.0, l_locked_templates, fnd_api.g_true, fnd_api.g_true, l_return_status, l_msg_count, l_msg_data);
5712 END IF;
5713
5714 RAISE;
5715 END insert_ui_templates;
5716
5717 --------------------------------------------------------------
5718 ----bulk collect from cz_ui_cont_type_templs
5719 PROCEDURE bulk_collect_cont_type_templs(p_cz_ui_defs_old_oa_ref cz_pb_mgr.t_ref)
5720 IS
5721 l_cnt_typ_tmpls_tmpid_tbl cz_pb_mgr.t_ref;
5722 l_cnt_typ_tmpls_uidef_tbl cz_pb_mgr.t_ref;
5723 l_cnt_typ_tmpls_tgtuidef_tbl cz_pb_mgr.t_ref;
5724 l_cnt_typ_tmpls_cont_tbl cz_pb_mgr.t_ref;
5725 rec_count NUMBER := 0;
5726 BEGIN
5727 IF (p_cz_ui_defs_old_oa_ref.COUNT > 0)
5728 THEN
5729 cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref.DELETE;
5730 cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.DELETE;
5731 cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.DELETE;
5732
5733 FOR uidef IN p_cz_ui_defs_old_oa_ref.FIRST .. p_cz_ui_defs_old_oa_ref.LAST
5734 LOOP
5735 l_cnt_typ_tmpls_tmpid_tbl.DELETE;
5736 l_cnt_typ_tmpls_uidef_tbl.DELETE;
5737 l_cnt_typ_tmpls_cont_tbl.DELETE;
5738 l_cnt_typ_tmpls_tgtuidef_tbl.DELETE;
5739
5740 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
5741 THEN
5742 SELECT ui_def_id, template_id, template_ui_def_id, content_type
5743 BULK COLLECT INTO l_cnt_typ_tmpls_uidef_tbl, l_cnt_typ_tmpls_tmpid_tbl, l_cnt_typ_tmpls_tgtuidef_tbl, l_cnt_typ_tmpls_cont_tbl
5744 FROM cz_ui_cont_type_templs
5745 WHERE cz_ui_cont_type_templs.ui_def_id = p_cz_ui_defs_old_oa_ref(uidef) AND cz_ui_cont_type_templs.deleted_flag = record_not_deleted;
5746 ELSE
5747 SELECT ui_def_id, template_id, template_ui_def_id, content_type
5748 BULK COLLECT INTO l_cnt_typ_tmpls_uidef_tbl, l_cnt_typ_tmpls_tmpid_tbl, l_cnt_typ_tmpls_tgtuidef_tbl, l_cnt_typ_tmpls_cont_tbl
5749 FROM cz_ui_cont_type_templs
5750 WHERE cz_ui_cont_type_templs.ui_def_id = p_cz_ui_defs_old_oa_ref(uidef)
5751 AND cz_ui_cont_type_templs.seeded_flag <> seed_data
5752 AND cz_ui_cont_type_templs.deleted_flag = record_not_deleted
5753 AND cz_ui_cont_type_templs.master_template_flag <> '1';
5754 END IF;
5755
5756 IF (l_cnt_typ_tmpls_uidef_tbl.COUNT > 0)
5757 THEN
5758 rec_count := cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.COUNT;
5759
5760 FOR uitmp IN l_cnt_typ_tmpls_uidef_tbl.FIRST .. l_cnt_typ_tmpls_uidef_tbl.LAST
5761 LOOP
5762 rec_count := rec_count + 1;
5763 cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref(rec_count) := l_cnt_typ_tmpls_tmpid_tbl(uitmp);
5764 cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5765 -- cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5766 cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref(rec_count) := l_cnt_typ_tmpls_tgtuidef_tbl(uitmp);
5767 cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(rec_count) := l_cnt_typ_tmpls_cont_tbl(uitmp);
5768 END LOOP;
5769 END IF;
5770 END LOOP;
5771 END IF;
5772 EXCEPTION
5773 WHEN NO_DATA_FOUND
5774 THEN
5775 NULL;
5776 WHEN OTHERS
5777 THEN
5778 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_cont_templates', 'SQLERRM', SQLERRM);
5779 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UICONTTEMPLATES', SQLCODE);
5780 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5781 RAISE;
5782 END bulk_collect_cont_type_templs;
5783
5784 --------------------------------------------------------------------------
5785 ----bulk collect from cz_ui_cont_type_templs
5786 PROCEDURE bulk_collect_ui_actions(p_old_ui_def_tbl IN cz_pb_mgr.t_ref)
5787 IS
5788 l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
5789 l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
5790 l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
5791 l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
5792 l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
5793 l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
5794 l_prcpg_templ_tbl cz_pb_mgr.t_ref;
5795 l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
5796 l_prc_caption_tbl cz_pb_mgr.t_ref;
5797 l_pg_title_tbl cz_pb_mgr.t_ref;
5798 l_main_msg_tbl cz_pb_mgr.t_ref;
5799 rec_count NUMBER;
5800 BEGIN
5801 IF (p_old_ui_def_tbl.COUNT > 0) THEN
5802 rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
5803
5804 FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5805 LOOP
5806 l_ui_actns_ui_act_id_tbl.DELETE;
5807 l_ui_actns_ui_uidef_tbl.DELETE;
5808 l_ui_actns_ui_tgtui_tbl.DELETE;
5809 l_ui_actns_tgtexpl_tbl.DELETE;
5810 l_ui_actns_ctx_comp_tbl.DELETE;
5811 l_ui_actns_ren_cond_tbl.DELETE;
5812 l_prcpg_templ_tbl.DELETE;
5813 l_prcpg_tmpui_tbl.DELETE;
5814 l_prc_caption_tbl.DELETE;
5815 l_pg_title_tbl.DELETE;
5816 l_main_msg_tbl.DELETE;
5817
5818 SELECT ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
5819 ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
5820 ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
5821 BULK COLLECT INTO l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
5822 ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
5823 ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
5824 FROM cz_ui_actions
5825 WHERE cz_ui_actions.ui_def_id = p_old_ui_def_tbl(uidef)
5826 AND cz_ui_actions.deleted_flag = record_not_deleted
5827 AND cz_ui_actions.seeded_flag <> seed_data;
5828
5829 -- Processing page ER#9656558
5830 -- insert processing page related texts here
5831 insert_intl_texts(l_prc_caption_tbl, 'processing page caption intl texts');
5832 insert_intl_texts(l_pg_title_tbl, 'processing page title intl texts');
5833 insert_intl_texts(l_main_msg_tbl, 'processing page main message intl texts');
5834
5835 IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
5836 FOR uitmp IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
5837 LOOP
5838 rec_count := rec_count + 1;
5839 cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5840 cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5841 cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(uitmp);
5842 cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(uitmp);
5843 cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(uitmp);
5844 cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(uitmp);
5845 cz_pb_mgr.g_ui_actns_ren_cond_tbl(rec_count) := l_ui_actns_ren_cond_tbl(uitmp);
5846 cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(uitmp);
5847 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(uitmp);
5848 cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(uitmp);
5849 cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(uitmp);
5850 cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(uitmp);
5851 END LOOP;
5852 END IF;
5853 END LOOP;
5854 END IF;
5855 EXCEPTION
5856 WHEN NO_DATA_FOUND
5857 THEN
5858 NULL;
5859 WHEN OTHERS
5860 THEN
5861 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
5862 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
5863 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5864 RAISE;
5865 END bulk_collect_ui_actions;
5866
5867 ----------------------------------------------------------
5868 ----bulk collect from cz_ui_cont_type_templs
5869 PROCEDURE bulk_collect_ui_images(p_old_ui_def_tbl cz_pb_mgr.t_ref)
5870 IS
5871 l_ui_images_ui_tbl cz_pb_mgr.t_ref;
5872 l_ui_images_usg_tbl cz_pb_mgr.t_ref;
5873 l_ui_images_enty_tbl cz_pb_mgr.t_ref;
5874 rec_count NUMBER := 0;
5875 BEGIN
5876 IF (p_old_ui_def_tbl.COUNT > 0)
5877 THEN
5878 cz_pb_mgr.v_ui_images_ui_ref.DELETE;
5879 cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
5880 cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
5881 cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
5882
5883 FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5884 LOOP
5885 l_ui_images_ui_tbl.DELETE;
5886
5887 SELECT ui_def_id, image_usage_code, entity_code
5888 BULK COLLECT INTO l_ui_images_ui_tbl, l_ui_images_usg_tbl, l_ui_images_enty_tbl
5889 FROM cz_ui_images
5890 WHERE cz_ui_images.ui_def_id = p_old_ui_def_tbl(uidef)
5891 AND cz_ui_images.deleted_flag = record_not_deleted
5892 AND cz_ui_images.seeded_flag <> seed_data;
5893
5894 IF (l_ui_images_ui_tbl.COUNT > 0)
5895 THEN
5896 rec_count := cz_pb_mgr.v_ui_images_ui_tbl.COUNT;
5897
5898 FOR uitmp IN l_ui_images_ui_tbl.FIRST .. l_ui_images_ui_tbl.LAST
5899 LOOP
5900 rec_count := rec_count + 1;
5901 -- cz_pb_mgr.v_ui_images_ui_ref(rec_count) := l_ui_images_ui_tbl(uitmp);
5902 cz_pb_mgr.v_ui_images_ui_tbl(rec_count) := l_ui_images_ui_tbl(uitmp);
5903 cz_pb_mgr.v_ui_images_usg_tbl(rec_count) := l_ui_images_usg_tbl(uitmp);
5904 cz_pb_mgr.v_ui_images_enty_tbl(rec_count) := l_ui_images_enty_tbl(uitmp);
5905 END LOOP;
5906 END IF;
5907 END LOOP;
5908 END IF;
5909 EXCEPTION
5910 WHEN NO_DATA_FOUND
5911 THEN
5912 NULL;
5913 WHEN OTHERS
5914 THEN
5915 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_images', 'SQLERRM', SQLERRM);
5916 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIIMAGES', SQLCODE);
5917 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5918 RAISE;
5919 END bulk_collect_ui_images;
5920
5921 ----------------------------------------------------------
5922 ----procedure that returns global templates
5923 PROCEDURE get_global_templates(
5924 p_templates_tbl IN cz_pb_mgr.t_ref
5925 ,x_global_templates_tbl OUT NOCOPY cz_pb_mgr.t_ref
5926 ,x_not_global_templ_tbl OUT NOCOPY cz_pb_mgr.t_ref
5927 )
5928 IS
5929 rec_count NUMBER := 0;
5930 l_tmp_id NUMBER := 0;
5931 BEGIN
5932 IF (p_templates_tbl.COUNT > 0)
5933 THEN
5934 FOR tempid IN p_templates_tbl.FIRST .. p_templates_tbl.LAST
5935 LOOP
5936 BEGIN
5937 SELECT 1
5938 INTO l_tmp_id
5939 FROM cz_ui_templates
5940 WHERE cz_ui_templates.ui_def_id IS NULL AND cz_ui_templates.template_id = p_templates_tbl(tempid);
5941 EXCEPTION
5942 WHEN NO_DATA_FOUND
5943 THEN
5944 l_tmp_id := 0;
5945 END;
5946
5947 IF (l_tmp_id = 1)
5948 THEN
5949 rec_count := x_global_templates_tbl.COUNT + 1;
5950 x_global_templates_tbl(rec_count) := p_templates_tbl(tempid);
5951 ELSE
5952 rec_count := x_global_templates_tbl.COUNT + 1;
5953 x_not_global_templ_tbl(rec_count) := p_templates_tbl(tempid);
5954 END IF;
5955 END LOOP;
5956 END IF;
5957 EXCEPTION
5958 WHEN OTHERS
5959 THEN
5960 RAISE;
5961 END get_global_templates;
5962
5963 -----------------------------------------------------------------------------
5964 PROCEDURE copy_jrad_docs
5965 IS
5966 l_new_document VARCHAR2(255);
5967 BEGIN
5968 pbdebug := 22035;
5969
5970 IF (cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.COUNT > 0)
5971 THEN
5972 FOR doc IN cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.FIRST .. cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.LAST
5973 LOOP
5974 l_new_document :=
5975 REPLACE(cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc)
5976 ,TO_CHAR(cz_pb_mgr.g_pages_ui_def_old_ref(doc))
5977 ,TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_pages_ui_def_old_ref(doc)))
5978 );
5979 insert_into_repository(cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc), l_new_document, cz_pb_mgr.v_db_link , 'UI_PAGE');
5980 cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc) := l_new_document;
5981 END LOOP;
5982 END IF;
5983 EXCEPTION
5984 WHEN OTHERS
5985 THEN
5986 RAISE;
5987 END copy_jrad_docs;
5988
5989 ---------------------------------------------------------------------
5990 PROCEDURE copy_train_docs
5991 IS
5992 l_new_document VARCHAR2(255);
5993 BEGIN
5994 IF (cz_pb_mgr.g_page_sets_jrad_doc_ref.COUNT > 0)
5995 THEN
5996 FOR doc IN cz_pb_mgr.g_page_sets_jrad_doc_ref.FIRST .. cz_pb_mgr.g_page_sets_jrad_doc_ref.LAST
5997 LOOP
5998 l_new_document :=
5999 REPLACE(cz_pb_mgr.g_page_sets_jrad_doc_ref(doc)
6000 ,'ui' || TO_CHAR(cz_pb_mgr.g_page_sets_ui_old_ref(doc))
6001 ,'ui' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_page_sets_ui_old_ref(doc)))
6002 );
6003 insert_into_repository(cz_pb_mgr.g_page_sets_jrad_doc_ref(doc), l_new_document, cz_pb_mgr.v_db_link, 'ui page set');
6004 cz_pb_mgr.g_page_sets_jrad_doc_ref(doc) := l_new_document;
6005 END LOOP;
6006 END IF;
6007 EXCEPTION
6008 WHEN OTHERS
6009 THEN
6010 RAISE;
6011 END copy_train_docs;
6012
6013 ---------------------------------------------
6014 PROCEDURE insert_ref_templates
6015 IS
6016 l_template_id_tbl cz_pb_mgr.t_ref;
6017 l_ref_template_id_tbl cz_pb_mgr.t_ref;
6018 l_template_ui_tbl cz_pb_mgr.t_ref;
6019 l_ref_templ_ui_tbl cz_pb_mgr.t_ref;
6020 rec_count NUMBER := 0;
6021 plsql_table_list cz_pb_mgr.col_plsql_table_list;
6022 BEGIN
6023 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
6024 THEN
6025 cz_pb_mgr.g_template_id_ref.DELETE;
6026 cz_pb_mgr.g_ref_template_id_ref.DELETE;
6027 cz_pb_mgr.g_template_ui_ref.DELETE;
6028 cz_pb_mgr.g_ref_templ_ui_ref.DELETE;
6029 cz_pb_mgr.g_template_id_old_ref.DELETE;
6030 cz_pb_mgr.g_ref_template_id_old_ref.DELETE;
6031
6032 FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
6033 LOOP
6034 l_template_id_tbl.DELETE;
6035 l_ref_template_id_tbl.DELETE;
6036 l_template_ui_tbl.DELETE;
6037 l_ref_templ_ui_tbl.DELETE;
6038
6039 BEGIN
6040 SELECT template_id, ref_template_id, template_ui_def_id, ref_template_ui_def_id
6041 BULK COLLECT INTO l_template_id_tbl, l_ref_template_id_tbl, l_template_ui_tbl, l_ref_templ_ui_tbl
6042 FROM cz_ui_ref_templates
6043 WHERE cz_ui_ref_templates.template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
6044 -- vsingava 29th Oct '10. Bug10245926.
6045 -- Consider only source templates.
6046 AND cz_ui_ref_templates.template_ui_def_id = '0'
6047 AND cz_ui_ref_templates.deleted_flag = '0';
6048 EXCEPTION
6049 WHEN NO_DATA_FOUND
6050 THEN
6051 NULL;
6052 END;
6053
6054 IF (l_template_id_tbl.COUNT > 0)
6055 THEN
6056 rec_count := cz_pb_mgr.g_TEMPLATE_ID_old_ref.COUNT;
6057
6058 FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
6059 LOOP
6060 rec_count := rec_count + 1;
6061 -- cz_pb_mgr.g_template_id_ref(rec_count) := l_template_id_tbl(j);
6062 cz_pb_mgr.g_ref_template_id_ref(rec_count) := l_ref_template_id_tbl(j);
6063 cz_pb_mgr.g_ref_template_id_old_ref(rec_count) := l_ref_template_id_tbl(j);
6064 cz_pb_mgr.g_template_ui_ref(rec_count) := l_template_ui_tbl(j);
6065 cz_pb_mgr.g_ref_templ_ui_ref(rec_count) := l_ref_templ_ui_tbl(j);
6066 cz_pb_mgr.g_template_id_old_ref(rec_count) := l_template_id_tbl(j);
6067 END LOOP;
6068 END IF;
6069 END LOOP;
6070
6071 resolve_ids(cz_pb_mgr.g_TEMPLATE_ID_old_ref,cz_pb_mgr.g_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve template id of ref templates');
6072 resolve_ids(cz_pb_mgr.g_ref_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve ref template id of ref templates', ENTITY_TYPE_UCT);
6073 resolve_tmpl_ui_defs(cz_pb_mgr.g_template_ui_ref, cz_pb_mgr.g_template_id_old_ref, 'resolve template ui def of ref templates');
6074 resolve_tmpl_ui_defs(cz_pb_mgr.g_ref_templ_ui_ref, cz_pb_mgr.g_ref_template_id_old_ref, 'resolve ref template ui def of ref templates');
6075 plsql_table_list.DELETE;
6076 rec_count := 1;
6077 plsql_table_list(rec_count).col_name := 'template_id';
6078 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_ID_ref';
6079 rec_count := rec_count + 1;
6080 plsql_table_list(rec_count).col_name := 'ref_template_id';
6081 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPLATE_ID_ref';
6082 rec_count := rec_count + 1;
6083 plsql_table_list(rec_count).col_name := 'template_ui_def_id';
6084 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_UI_ref';
6085 rec_count := rec_count + 1;
6086 plsql_table_list(rec_count).col_name := 'ref_template_ui_def_id';
6087 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPL_UI_ref';
6088 insert_into_table('CZ_UI_REF_TEMPLATES'
6089 ,'template_id'
6090 ,'ref_template_id'
6091 ,cz_pb_mgr.v_db_link
6092 ,plsql_table_list
6093 ,'cz_pb_mgr.g_TEMPLATE_ID_old_ref'
6094 ,'cz_pb_mgr.g_REF_TEMPLATE_ID_old_ref'
6095 ,cz_pb_mgr.g_template_id_old_ref
6096 ,cz_pb_mgr.g_ref_template_id_old_ref
6097 );
6098 END IF;
6099 EXCEPTION
6100 WHEN OTHERS
6101 THEN
6102 RAISE;
6103 END insert_ref_templates;
6104
6105 ------------------------------------------------------
6106 PROCEDURE export_signatures(p_sig_array IN t_ref)
6107 IS
6108 plsql_table_list cz_pb_mgr.col_plsql_table_list;
6109 l_signature_new_tbl cz_pb_mgr.t_ref;
6110 l_signature_old_tbl cz_pb_mgr.t_ref;
6111 l_arg_sig_tbl cz_pb_mgr.t_ref;
6112 l_data_sig_tbl cz_pb_mgr.t_ref;
6113 l_sig_count NUMBER := 0;
6114 rec_count NUMBER := 0;
6115 l_arg_ind_tbl cz_pb_mgr.t_ref;
6116 BEGIN
6117 IF (p_sig_array.COUNT > 0)
6118 THEN
6119 cz_pb_mgr.v_sig_new_ref.DELETE;
6120 cz_pb_mgr.v_sig_old_ref.DELETE;
6121 cz_pb_mgr.v_sig_idx_ref.DELETE;
6122 cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
6123 cz_pb_mgr.v_arg_sig_tbl.DELETE;
6124 cz_pb_mgr.v_data_sig_tbl.DELETE;
6125
6126 FOR sigid IN p_sig_array.FIRST .. p_sig_array.LAST
6127 LOOP
6128 l_signature_old_tbl.DELETE;
6129 l_signature_new_tbl.DELETE;
6130
6131 BEGIN
6132 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_signatures_seq
6133 , 'cz_signatures_s.nextval' || cz_pb_mgr.v_db_link
6134 ,cz_pb_mgr.v_oraclesequenceincr
6135 )
6136 ,signature_id
6137 BULK COLLECT INTO l_signature_new_tbl
6138 ,l_signature_old_tbl
6139 FROM cz_signatures
6140 WHERE cz_signatures.signature_id = p_sig_array(sigid)
6141 AND cz_signatures.deleted_flag = record_not_deleted
6142 AND cz_signatures.seeded_flag <> seed_data;
6143 EXCEPTION
6144 WHEN NO_DATA_FOUND
6145 THEN
6146 NULL;
6147 END;
6148
6149 IF (l_signature_old_tbl.COUNT > 0)
6150 THEN
6151 FOR i IN l_signature_old_tbl.FIRST .. l_signature_old_tbl.LAST
6152 LOOP
6153 IF (NOT cz_pb_mgr.v_sig_idx_ref.EXISTS(l_signature_old_tbl(i)))
6154 THEN
6155 l_sig_count := cz_pb_mgr.v_sig_new_ref.COUNT + 1;
6156 cz_pb_mgr.v_sig_new_ref(l_sig_count) := l_signature_new_tbl(i);
6157 cz_pb_mgr.v_sig_old_ref(l_sig_count) := l_signature_old_tbl(i);
6158 cz_pb_mgr.v_sig_idx_ref(l_signature_old_tbl(i)):=l_signature_new_tbl(i);
6159 END IF;
6160 END LOOP;
6161 END IF;
6162 END LOOP;
6163
6164 plsql_table_list.DELETE;
6165 rec_count := 1;
6166 plsql_table_list(rec_count).col_name := 'signature_id';
6167 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_sig_new_ref';
6168 insert_into_table('cz_signatures', 'signature_id', cz_pb_mgr.v_db_link, plsql_table_list, 'cz_pb_mgr.v_sig_old_ref', cz_pb_mgr.v_sig_old_ref);
6169 END IF;
6170
6171 IF (cz_pb_mgr.v_sig_old_ref.COUNT > 0)
6172 THEN
6173 FOR j IN cz_pb_mgr.v_sig_old_ref.FIRST .. cz_pb_mgr.v_sig_old_ref.LAST
6174 LOOP
6175 SELECT argument_signature_id, datatype_signature_id, argument_index
6176 BULK COLLECT INTO l_arg_sig_tbl, l_data_sig_tbl, l_arg_ind_tbl
6177 FROM cz_signature_arguments
6178 WHERE cz_signature_arguments.argument_signature_id = cz_pb_mgr.v_sig_old_ref(j)
6179 AND cz_signature_arguments.deleted_flag = record_not_deleted
6180 AND cz_signature_arguments.seeded_flag <> seed_data;
6181
6182 IF (l_arg_sig_tbl.COUNT > 0)
6183 THEN
6184 FOR k IN l_arg_sig_tbl.FIRST .. l_arg_sig_tbl.LAST
6185 LOOP
6186 l_sig_count := cz_pb_mgr.v_arg_sig_old_tbl.COUNT + 1;
6187 cz_pb_mgr.v_arg_sig_old_tbl(l_sig_count) := l_arg_sig_tbl(k);
6188 -- cz_pb_mgr.v_arg_sig_tbl(l_sig_count) := l_arg_sig_tbl(k);
6189 cz_pb_mgr.v_data_sig_tbl(l_sig_count) := l_data_sig_tbl(k);
6190 cz_pb_mgr.v_arg_ind_old_tbl(l_sig_count) := l_arg_ind_tbl(k);
6191 END LOOP;
6192 END IF;
6193 END LOOP;
6194
6195 ----resolve ids
6196 resolve_ids(cz_pb_mgr.v_arg_sig_old_tbl,cz_pb_mgr.v_arg_sig_tbl, cz_pb_mgr.v_sig_idx_ref, 'arg sig ids cz signature arguments');
6197 resolve_ids(cz_pb_mgr.v_data_sig_tbl, cz_pb_mgr.v_sig_idx_ref, 'data sig ids cz signature arguments', ENTITY_TYPE_SIGNATURE);
6198 plsql_table_list.DELETE;
6199 rec_count := 1;
6200 plsql_table_list(rec_count).col_name := 'argument_signature_id';
6201 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_sig_tbl';
6202 rec_count := rec_count + 1;
6203 plsql_table_list(rec_count).col_name := 'datatype_signature_id';
6204 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_data_sig_tbl';
6205 rec_count := rec_count + 1;
6206 plsql_table_list(rec_count).col_name := 'argument_index';
6207 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_ind_old_tbl';
6208 insert_into_table('cz_signature_arguments'
6209 ,'argument_signature_id'
6210 ,'argument_index'
6211 ,cz_pb_mgr.v_db_link
6212 ,plsql_table_list
6213 ,'cz_pb_mgr.v_arg_sig_old_tbl'
6214 ,'cz_pb_mgr.v_arg_ind_old_tbl'
6215 ,cz_pb_mgr.v_arg_sig_old_tbl
6216 ,cz_pb_mgr.v_arg_ind_old_tbl
6217 );
6218 l_signature_new_tbl.DELETE;
6219 l_signature_old_tbl.DELETE;
6220 l_arg_sig_tbl.DELETE;
6221 l_data_sig_tbl.DELETE;
6222 END IF;
6223 EXCEPTION
6224 WHEN OTHERS
6225 THEN
6226 cz_pb_mgr.v_err_message := 'Insert into signature sets for: ' || SQLERRM;
6227 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SIGNATURESETS', SQLCODE);
6228 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6229 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6230 RAISE;
6231 END export_signatures;
6232
6233 -------------------------------------------------------------------------------
6234 PROCEDURE insert_jrad_ui_intl_texts
6235 IS
6236 l_intl_text_id_tbl cz_pb_mgr.t_ref;
6237 rec_count NUMBER := 0;
6238 BEGIN
6239 cz_pb_mgr.g_intl_text_id_ref.DELETE;
6240
6241 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
6242 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
6243 LOOP
6244 l_intl_text_id_tbl.DELETE;
6245
6246 BEGIN
6247 SELECT intl_text_id
6248 BULK COLLECT INTO l_intl_text_id_tbl
6249 FROM cz_intl_texts txt, cz_ui_defs ui
6250 WHERE txt.model_id = cz_pb_mgr.v_models_to_be_exported(i)
6251 AND txt.deleted_flag = '0'
6252 AND NVL(txt.seeded_flag, '0') = '0'
6253 AND NVL(txt.ui_def_id, -1) = ui.ui_def_id
6254 AND txt.model_id = ui.devl_project_id
6255 AND ui.deleted_flag = '0' AND ui_style = g_ui_style_jrad;
6256 EXCEPTION
6257 WHEN NO_DATA_FOUND THEN
6258 NULL;
6259 END;
6260
6261 IF (l_intl_text_id_tbl.COUNT > 0) THEN
6262 FOR j IN l_intl_text_id_tbl.FIRST .. l_intl_text_id_tbl.LAST
6263 LOOP
6264 rec_count := rec_count + 1;
6265 cz_pb_mgr.g_intl_text_id_ref(rec_count) := l_intl_text_id_tbl(j);
6266 END LOOP;
6267 END IF;
6268 END LOOP;
6269
6270 IF (rec_count > 0) THEN
6271 insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'caption texts of JRAD UI');
6272 END IF;
6273 END IF;
6274
6275 -- main msg and title ids collected in get_oa_tmpls
6276 IF cz_pb_mgr.g_ui_templates_msg_id_ref.COUNT > 0 THEN
6277 rec_count := 0;
6278 CZ_PB_MGR.g_intl_text_id_ref.DELETE;
6279
6280 FOR i IN cz_pb_mgr.g_ui_templates_msg_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_msg_id_ref.LAST LOOP
6281 IF cz_pb_mgr.g_ui_templates_msg_id_ref(i) IS NOT NULL THEN
6282 rec_count := rec_count + 1;
6283 cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_msg_id_ref(i);
6284 END IF;
6285 IF cz_pb_mgr.g_ui_templates_title_ref(i) IS NOT NULL THEN
6286 rec_count := rec_count + 1;
6287 cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_title_ref(i);
6288 END IF;
6289 END LOOP;
6290
6291 IF (rec_count > 0) THEN
6292 insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'template msg and title texts', TRUE);
6293 END IF;
6294 END IF;
6295
6296 EXCEPTION
6297 WHEN OTHERS THEN
6298 cz_pb_mgr.v_err_message := 'Bulk Collect of intl texts of JRAD UI: ' || SQLERRM;
6299 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERTJRADUIINTLTEXTS', SQLCODE);
6300 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6301 RAISE;
6302 END insert_jrad_ui_intl_texts;
6303
6304 -------------------------------------------------------------------------------
6305 ------copying OA style UI(s)
6306 PROCEDURE export_oa_uis
6307 IS
6308 rec_count NUMBER := 0;
6309 row_count NUMBER := 0;
6310 plsql_table_list cz_pb_mgr.col_plsql_table_list;
6311 l_new_document VARCHAR2(255);
6312 BEGIN
6313 ----insert intl texts of JRAD UI(s)
6314 insert_jrad_ui_intl_texts;
6315 ----insert into cz_ui_templates
6316 insert_ui_templates;
6317 -----insert ref templates
6318 insert_ref_templates;
6319
6320 --bug 1170415 : set variable to true in order to skip rollback in failure case
6321 g_skip_templ_rollback := TRUE;
6322
6323 ----collect ui pages
6324 bulk_collect_ui_pages;
6325 ----copy jrad docs
6326 copy_jrad_docs;
6327 ------insert into ui pages
6328 insert_into_ui_pages;
6329 ----collect page sets
6330 bulk_collect_page_sets;
6331 copy_train_docs;
6332 insert_into_ui_page_sets;
6333 -----bulk collect from page refs
6334 bulk_collect_page_refs;
6335 ----insert into cz_ui_page_refs
6336 insert_into_ui_page_refs;
6337 -----bulk collect from ui refs
6338 bulk_collect_ui_refs;
6339 ----insert into cz_ui_refs
6340 insert_into_ui_refs;
6341 -----bulk collect from ui ps maps
6342 bulk_collect_ui_ps_maps;
6343 ----insert into cz_ui_page_elements
6344 export_signatures(cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl);
6345 insert_ui_ps_maps;
6346
6347 -- A master template carries its own set of content templates
6348 -- need to resolved everything and insert separately for master templates
6349 -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
6350 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
6351 THEN
6352 --collect content templates
6353 bulk_collect_cont_type_templs(cz_pb_mgr.v_mt_old_id_tbl);
6354 --resolve template ids
6355 resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'tmpl ids of ui def of cont type tmpls', ENTITY_TYPE_UCT);
6356 --resolve ui def ids
6357 resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref,cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref, cz_pb_mgr.v_mt_old_to_new_id, 'ui def ids of ui def of cont type tmpls');
6358 plsql_table_list.DELETE;
6359 rec_count := 1;
6360 plsql_table_list(rec_count).col_name := 'ui_def_id';
6361 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref';
6362 rec_count := rec_count + 1;
6363 plsql_table_list(rec_count).col_name := 'template_id';
6364 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
6365 rec_count := rec_count + 1;
6366 plsql_table_list(rec_count).col_name := 'template_ui_def_id';
6367 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
6368 rec_count := rec_count + 1;
6369 plsql_table_list(rec_count).col_name := 'content_type';
6370 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
6371 insert_into_table('cz_ui_cont_type_templs'
6372 ,'content_type'
6373 ,'ui_def_id'
6374 ,cz_pb_mgr.v_db_link
6375 ,plsql_table_list
6376 ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
6377 ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
6378 ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
6379 ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
6380 );
6381 row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
6382 IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT >0) THEN
6383 FOR i in cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.FIRST .. cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.LAST
6384 LOOP
6385 row_count:=row_count+1;
6386 cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
6387 cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
6388 END LOOP;
6389 END IF;
6390 END IF;
6391
6392 ----resolve ui_def_id
6393 bulk_collect_cont_type_templs(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
6394
6395 resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref,cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of cont type tmpls');
6396
6397 ----resolve tmp ui_def_id, template id
6398 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
6399 resolve_tmpl_ui_defs(cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref, cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref, 'tmpl uidefs of cz_ui_cont_type_templs');
6400 resolve_ids(cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'tmpl ids of ui def of cont type tmpls', ENTITY_TYPE_UCT);
6401 END IF;
6402
6403 plsql_table_list.DELETE;
6404 rec_count := 1;
6405 plsql_table_list(rec_count).col_name := 'ui_def_id';
6406 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref';
6407 rec_count := rec_count + 1;
6408 plsql_table_list(rec_count).col_name := 'template_id';
6409 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
6410 rec_count := rec_count + 1;
6411 plsql_table_list(rec_count).col_name := 'template_ui_def_id';
6412 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
6413 rec_count := rec_count + 1;
6414 plsql_table_list(rec_count).col_name := 'content_type';
6415 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
6416 insert_into_table('cz_ui_cont_type_templs'
6417 ,'content_type'
6418 ,'ui_def_id'
6419 ,cz_pb_mgr.v_db_link
6420 ,plsql_table_list
6421 ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
6422 ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
6423 ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
6424 ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
6425 );
6426 row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
6427 IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT > 0) THEN
6428 FOR i in cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.FIRST .. cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.LAST
6429 LOOP
6430 row_count:=row_count+1;
6431 cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
6432 cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
6433 END LOOP;
6434 END IF;
6435
6436 ----bulk collect ui actions
6437 bulk_collect_ui_actions(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
6438
6439 -- Note g_ui_actns_ui_act_id_ref contains both local ui actions (bulk_collect_ui_actions)
6440 -- and global ones (collect_global_actions). The 'new' ids in this array are the same old
6441 -- ids as the ones in g_ui_actns_ui_act_id_old_ref. They are real new ids only when the
6442 -- session is remote migration and the actions are globals.
6443
6444 ----resolve ui_def_id
6445 resolve_ids(cz_pb_mgr.g_ui_actns_ui_uidef_old_ref,cz_pb_mgr.g_ui_actns_ui_uidef_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui actions');
6446 -- ignore expl id resolution failure because of a ui refresh issue (see 6817586)
6447 resolve_ids(cz_pb_mgr.g_ui_actns_tgtexpl_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of ui actions', FLD_IGNORE_NOW);
6448 -- context_component_id, obsolete
6449 -- resolve_ids(cz_pb_mgr.g_ui_actns_ctx_comp_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'ctx comp id of ui actions');
6450 resolve_ids(cz_pb_mgr.g_ui_actns_ren_cond_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'render condition id of ui actions');
6451
6452 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
6453 resolve_tmpl_ui_defs(cz_pb_mgr.g_uiact_prcpg_tmpui_tbl, cz_pb_mgr.g_uiact_prcpg_templ_tbl, 'prc pg tmp uidef of ui actions');
6454 resolve_ids(cz_pb_mgr.g_uiact_prcpg_templ_tbl, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'prc pg templ id of ui actions', ENTITY_TYPE_UCT);
6455 END IF;
6456
6457 resolve_intl_texts(cz_pb_mgr.g_uiact_prc_caption_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, ' prc caption ids of ui actions');
6458 resolve_intl_texts(cz_pb_mgr.g_uiact_pg_title_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, ' pg title ids of ui actions');
6459 resolve_intl_texts(cz_pb_mgr.g_uiact_main_msg_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, ' main msg ids of ui actions');
6460
6461 plsql_table_list.DELETE;
6462 rec_count := 1;
6463 plsql_table_list(rec_count).col_name := 'ui_def_id';
6464 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_uidef_ref';
6465 rec_count := rec_count + 1;
6466 plsql_table_list(rec_count).col_name := 'ui_action_id';
6467 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_act_id_ref';
6468 rec_count := rec_count + 1;
6469 plsql_table_list(rec_count).col_name := 'target_ui_def_id';
6470 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_tgtui_ref';
6471 rec_count := rec_count + 1;
6472 plsql_table_list(rec_count).col_name := 'target_expl_node_id';
6473 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_tgtexpl_ref';
6474 rec_count := rec_count + 1;
6475 plsql_table_list(rec_count).col_name := 'context_component_id';
6476 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ctx_comp_tbl';
6477 rec_count := rec_count + 1;
6478 plsql_table_list(rec_count).col_name := 'render_condition_id';
6479 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ren_cond_tbl';
6480 rec_count := rec_count + 1;
6481 plsql_table_list(rec_count).col_name := 'processing_page_templ_id';
6482 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_templ_tbl';
6483 rec_count := rec_count + 1;
6484 plsql_table_list(rec_count).col_name := 'proc_page_templ_ui_def_id';
6485 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_tmpui_tbl';
6486 rec_count := rec_count + 1;
6487 plsql_table_list(rec_count).col_name := 'processing_caption_text_id';
6488 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prc_caption_tbl';
6489 rec_count := rec_count + 1;
6490 plsql_table_list(rec_count).col_name := 'page_title_text_id';
6491 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_pg_title_tbl';
6492 rec_count := rec_count + 1;
6493 plsql_table_list(rec_count).col_name := 'main_message_text_id';
6494 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_main_msg_tbl';
6495 -- should call resolve_ids instead
6496 resolve_ref_ids_not_found(cz_pb_mgr.g_ui_actns_ui_uidef_ref
6497 ,cz_pb_mgr.v_cz_ui_defs_old_ref
6498 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
6499 ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref
6500 ,'cz_ui_actions.target_ui_def_id'
6501 ,cz_pb_mgr.v_status_code
6502 );
6503 insert_into_table('cz_ui_actions'
6504 ,'ui_action_id'
6505 ,'ui_def_id'
6506 ,cz_pb_mgr.v_db_link
6507 ,plsql_table_list
6508 ,'cz_pb_mgr.g_ui_actns_ui_act_id_old_ref'
6509 ,'cz_pb_mgr.g_ui_actns_ui_uidef_old_ref'
6510 ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref
6511 ,cz_pb_mgr.g_ui_actns_ui_uidef_old_ref
6512 );
6513
6514 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
6515 THEN
6516 refresh_ui_actions(cz_pb_mgr.g_ui_actns_ui_uidef_old_ref);
6517 END IF;
6518
6519 --bug 1170415 set variable to true in order to skip rollback for templ action in failure case
6520 g_skip_templaction_rollback := TRUE;
6521
6522 ------bulk collect ui images for Master templates
6523 -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
6524 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
6525 THEN
6526 bulk_collect_ui_images(cz_pb_mgr.v_mt_old_id_tbl);
6527 resolve_ids(cz_pb_mgr.v_ui_images_ui_tbl,cz_pb_mgr.v_ui_images_ui_ref, cz_pb_mgr.v_mt_old_to_new_id, 'ui def ids of mt ui images');
6528 plsql_table_list.DELETE;
6529 rec_count := 1;
6530 plsql_table_list(rec_count).col_name := 'ui_def_id';
6531 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
6532 rec_count := rec_count + 1;
6533 plsql_table_list(rec_count).col_name := 'image_usage_code';
6534 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
6535 rec_count := rec_count + 1;
6536 plsql_table_list(rec_count).col_name := 'entity_code';
6537 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
6538 insert_into_table('cz_ui_images'
6539 ,'ui_def_id'
6540 ,'image_usage_code'
6541 ,'entity_code'
6542 ,cz_pb_mgr.v_db_link
6543 ,plsql_table_list
6544 ,'cz_pb_mgr.v_ui_images_ui_tbl'
6545 ,'cz_pb_mgr.v_ui_images_usg_tbl'
6546 ,'cz_pb_mgr.v_ui_images_enty_tbl'
6547 ,cz_pb_mgr.v_ui_images_ui_tbl
6548 ,cz_pb_mgr.v_ui_images_usg_tbl
6549 ,cz_pb_mgr.v_ui_images_enty_tbl
6550 );
6551 row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
6552 IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT >0)THEN
6553 FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
6554 LOOP
6555 row_count:=row_count+1;
6556 cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
6557 cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
6558 cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
6559 END LOOP;
6560 END IF;
6561 END IF;
6562
6563 ----resolve ui_def_id
6564 bulk_collect_ui_images(cz_pb_mgr.v_cz_ui_defs_old_ref);
6565 resolve_ids(cz_pb_mgr.v_ui_images_ui_tbl,cz_pb_mgr.v_ui_images_ui_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui images');
6566 -----insert into ui images
6567 plsql_table_list.DELETE;
6568 rec_count := 1;
6569 plsql_table_list(rec_count).col_name := 'ui_def_id';
6570 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
6571 rec_count := rec_count + 1;
6572 plsql_table_list(rec_count).col_name := 'image_usage_code';
6573 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
6574 rec_count := rec_count + 1;
6575 plsql_table_list(rec_count).col_name := 'entity_code';
6576 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
6577 insert_into_table('cz_ui_images'
6578 ,'ui_def_id'
6579 ,'image_usage_code'
6580 ,'entity_code'
6581 ,cz_pb_mgr.v_db_link
6582 ,plsql_table_list
6583 ,'cz_pb_mgr.v_ui_images_ui_tbl'
6584 ,'cz_pb_mgr.v_ui_images_usg_tbl'
6585 ,'cz_pb_mgr.v_ui_images_enty_tbl'
6586 ,cz_pb_mgr.v_ui_images_ui_tbl
6587 ,cz_pb_mgr.v_ui_images_usg_tbl
6588 ,cz_pb_mgr.v_ui_images_enty_tbl
6589 );
6590 row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
6591 IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT > 0) THEN
6592 FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
6593 LOOP
6594 row_count:=row_count+1;
6595 cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
6596 cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
6597 cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
6598 END LOOP;
6599 END IF;
6600
6601 COMMIT;
6602 EXCEPTION
6603 WHEN OTHERS
6604 THEN
6605 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_OA_UI_ERR', 'SQLERRM', SQLERRM);
6606 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_EXPORTOAUI', SQLCODE);
6607 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6608 RAISE;
6609 END export_oa_uis;
6610
6611 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6612 ------makes a copy of a UI and its children
6613 PROCEDURE export_single_oa_ui(
6614 p_ui_def_id IN NUMBER
6615 ,x_ui_def_id OUT NOCOPY NUMBER
6616 ,x_return_status OUT NOCOPY VARCHAR2
6617 ,x_msg_count OUT NOCOPY NUMBER
6618 ,x_msg_data OUT NOCOPY VARCHAR2
6619 )
6620 IS
6621 ui_def_id_is_null EXCEPTION;
6622 ui_def_id_not_found EXCEPTION;
6623 not_oa_style_ui EXCEPTION;
6624 l_ui_def_id NUMBER;
6625 l_ui_style VARCHAR2(3);
6626 l_child_ui_tbl cz_pb_mgr.t_ref;
6627 rec_count NUMBER := 0;
6628 plsql_table_list cz_pb_mgr.col_plsql_table_list;
6629 BEGIN
6630 x_return_status := FND_API.G_RET_STS_SUCCESS;
6631 cz_pb_mgr.v_status_code := 'OK';
6632
6633 IF (p_ui_def_id IS NULL)
6634 THEN
6635 RAISE ui_def_id_is_null;
6636 END IF;
6637
6638 BEGIN
6639 SELECT ui_def_id, ui_style
6640 INTO l_ui_def_id, l_ui_style
6641 FROM cz_ui_defs
6642 WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
6643 EXCEPTION
6644 WHEN NO_DATA_FOUND
6645 THEN
6646 RAISE ui_def_id_not_found;
6647 END;
6648
6649 IF (l_ui_style <> oa_ui_style)
6650 THEN
6651 RAISE not_oa_style_ui;
6652 END IF;
6653
6654 cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
6655 cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
6656 cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
6657 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
6658 rec_count := cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT + 1;
6659 cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_ui_def_id;
6660 cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_ui_def_id;
6661 l_child_ui_tbl.DELETE;
6662
6663 BEGIN
6664 SELECT ref_ui_def_id
6665 BULK COLLECT INTO l_child_ui_tbl
6666 FROM cz_ui_refs
6667 WHERE cz_ui_refs.ui_def_id = l_ui_def_id AND cz_ui_refs.deleted_flag = record_not_deleted;
6668 EXCEPTION
6669 WHEN NO_DATA_FOUND
6670 THEN
6671 NULL; ---if no children then ignore
6672 END;
6673
6674 IF (l_child_ui_tbl.COUNT > 0)
6675 THEN
6676 rec_count := cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT + 1;
6677
6678 FOR i IN l_child_ui_tbl.FIRST .. l_child_ui_tbl.LAST
6679 LOOP
6680 rec_count := rec_count + 1;
6681 cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_child_ui_tbl(i);
6682 cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_child_ui_tbl(i);
6683 END LOOP;
6684 END IF;
6685
6686 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
6687 THEN
6688 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
6689 rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
6690 IF (v_cz_ui_defs_old_ref.COUNT > 0) THEN
6691 FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
6692 LOOP
6693 rec_count := rec_count + 1;
6694 cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
6695 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq, 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr);
6696
6697 IF (cz_pb_mgr.v_cz_ui_defs_old_ref(k) = p_ui_def_id)
6698 THEN
6699 x_ui_def_id := cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count);
6700 END IF;
6701
6702 cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.v_cz_ui_defs_old_ref(k)):=cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count);
6703 END LOOP;
6704 END IF;
6705
6706 --------populate plsql_table_list for ui_defs
6707 plsql_table_list.DELETE;
6708 rec_count := 1;
6709 plsql_table_list(rec_count).col_name := 'ui_def_id';
6710 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
6711 insert_into_table('cz_ui_defs'
6712 ,'ui_def_id'
6713 ,cz_pb_mgr.v_db_link
6714 ,plsql_table_list
6715 ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
6716 ,cz_pb_mgr.v_cz_ui_defs_old_ref
6717 );
6718 ------export oa uis
6719 export_oa_uis;
6720 cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
6721 cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
6722 cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
6723 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
6724 END IF;
6725 EXCEPTION
6726 WHEN ui_def_id_is_null
6727 THEN
6728 x_return_status := FND_API.G_RET_STS_ERROR;
6729 x_msg_data := cz_utils.get_text('UI_DEF_ID_IS_NULL');
6730 x_msg_count := 1;
6731 WHEN ui_def_id_not_found
6732 THEN
6733 x_return_status := FND_API.G_RET_STS_ERROR;
6734 x_msg_data := cz_utils.get_text('UI_DEF_ID_NOT_FOUND', 'UIDEFID', p_ui_def_id);
6735 x_msg_count := 1;
6736 WHEN not_oa_style_ui
6737 THEN
6738 x_return_status := FND_API.G_RET_STS_ERROR;
6739 x_msg_data := cz_utils.get_text('NOT_OA_STYLE_UI', 'UIDEFID', p_ui_def_id);
6740 x_msg_count := 1;
6741 WHEN OTHERS
6742 THEN
6743 x_return_status := FND_API.G_RET_STS_ERROR;
6744 x_msg_data := cz_utils.get_text('FATAL_ERROR', 'UIDEFID', p_ui_def_id, 'ERROR', SQLERRM);
6745 x_msg_count := 1;
6746 END export_single_oa_ui;
6747
6748 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6749 ----update pup status
6750 PROCEDURE update_pup_status(p_publication_id cz_model_publications.publication_id%TYPE)
6751 IS
6752 l_remote_publication_id NUMBER;
6753 BEGIN
6754 UPDATE cz_model_publications
6755 SET export_status = 'OK'
6756 WHERE remote_publication_id = (SELECT remote_publication_id
6757 FROM cz_model_publications
6758 WHERE deleted_flag = '0' AND publication_id = p_publication_id AND export_status = 'ERR')
6759 AND export_status = 'PUP'
6760 AND deleted_flag = '0';
6761 END;
6762
6763 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6764 ------updates export status in cZ_model_publications
6765 PROCEDURE update_publication_status(p_publication_id IN NUMBER, p_pb_status IN VARCHAR2, p_db_link IN VARCHAR2)
6766 IS
6767 BEGIN
6768 IF ((p_publication_id > 0) AND(p_pb_status IS NOT NULL))
6769 THEN
6770 cz_pb_mgr.v_insert_string :=
6771 'UPDATE cz_model_publications'
6772 || p_db_link
6773 || ' '
6774 || 'SET export_status = :1,'
6775 || ' '
6776 || 'published = sysdate'
6777 || ' '
6778 || 'WHERE cz_model_publications.publication_id = :2';
6779
6780 EXECUTE IMMEDIATE cz_pb_mgr.v_insert_string
6781 USING p_pb_status, p_publication_id;
6782 END IF;
6783 EXCEPTION
6784 WHEN OTHERS
6785 THEN
6786 cz_pb_mgr.v_err_message := 'ERROR : updation of publication status ' || SQLERRM;
6787 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPPBSTATUS', SQLCODE);
6788 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6789 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6790 RAISE;
6791 END update_publication_status;
6792
6793 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6794 ------------ to retrieve the db link
6795 FUNCTION retrieve_db_link(p_server_id PLS_INTEGER)
6796 RETURN VARCHAR2
6797 IS
6798 v_source_id cz_servers.server_local_id%TYPE;
6799 v_source_instance cz_servers.instance_name%TYPE;
6800 v_source_host cz_servers.hostname%TYPE;
6801 v_source_port cz_servers.db_listener_port%TYPE;
6802 v_source_owner cz_servers.cz_owner%TYPE;
6803 v_target_id cz_servers.server_local_id%TYPE;
6804 v_target_instance cz_servers.instance_name%TYPE;
6805 v_target_host cz_servers.hostname%TYPE;
6806 v_target_port cz_servers.db_listener_port%TYPE;
6807 v_target_owner cz_servers.cz_owner%TYPE;
6808 v_db_link cz_servers.cz_link_name%TYPE;
6809
6810 CURSOR db_compare_cur(p_server_id PLS_INTEGER)
6811 IS
6812 SELECT server_local_id, instance_name, hostname, db_listener_port, cz_owner, fndnam_link_name
6813 FROM cz_servers
6814 WHERE server_local_id = p_server_id OR server_local_id = 0
6815 ORDER BY server_local_id;
6816
6817 v_compare_record db_compare_cur%ROWTYPE;
6818 BEGIN
6819 BEGIN
6820 OPEN db_compare_cur(p_server_id);
6821
6822 LOOP
6823 FETCH db_compare_cur
6824 INTO v_compare_record;
6825
6826 EXIT WHEN db_compare_cur%NOTFOUND;
6827
6828 IF (v_compare_record.server_local_id = 0)
6829 THEN
6830 v_source_instance := v_compare_record.instance_name;
6831 v_source_host := v_compare_record.hostname;
6832 v_source_port := v_compare_record.db_listener_port;
6833 v_source_owner := v_compare_record.cz_owner;
6834 v_target_instance := v_compare_record.instance_name;
6835 v_target_host := v_compare_record.hostname;
6836 v_target_port := v_compare_record.db_listener_port;
6837 v_target_owner := v_compare_record.cz_owner;
6838 v_db_link := v_compare_record.fndnam_link_name;
6839 ELSE
6840 v_target_instance := v_compare_record.instance_name;
6841 v_target_host := v_compare_record.hostname;
6842 v_target_port := v_compare_record.db_listener_port;
6843 v_target_owner := v_compare_record.cz_owner;
6844 v_db_link := v_compare_record.fndnam_link_name;
6845 END IF;
6846 END LOOP;
6847
6848 CLOSE db_compare_cur;
6849 EXCEPTION
6850 WHEN OTHERS
6851 THEN
6852 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6853 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6854 END;
6855
6856 IF (((v_target_instance IS NULL) OR(v_target_host IS NULL) OR(v_target_port IS NULL)) AND(v_compare_record.server_local_id <> 0.0))
6857 THEN
6858 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6859 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6860 cz_pb_mgr.v_status_code := 'ERR';
6861 END IF;
6862
6863 IF ( ( (LTRIM(RTRIM(UPPER(v_source_instance))) = LTRIM(RTRIM(UPPER(v_target_instance))))
6864 AND (LTRIM(RTRIM(UPPER(v_source_host))) = LTRIM(RTRIM(UPPER(v_target_host))))
6865 AND (LTRIM(RTRIM(UPPER(v_source_port))) = LTRIM(RTRIM(UPPER(v_target_port))))
6866 )
6867 OR (p_server_id = 0)
6868 )
6869 THEN
6870 cz_pb_mgr.v_db_link := ' ';
6871 ELSE
6872 cz_pb_mgr.v_db_link := '@' || v_db_link || ' ';
6873 END IF;
6874
6875 RETURN cz_pb_mgr.v_db_link;
6876 EXCEPTION
6877 WHEN OTHERS
6878 THEN
6879 RETURN cz_pb_mgr.v_db_link;
6880 END retrieve_db_link;
6881
6882 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6883 ------------SKM**Bug#13437555---- A Special Procedure to rollback from Devl_Projects Table
6884 ------------This is due to unknown reason seeded project (Id=0) is getting
6885 ------------deleted as a part of rollback during publication failure.
6886 ------Deleted_flag=0 is not included in rp_entries as seeded_data can have with flag = 1
6887
6888 PROCEDURE DeleteFromDevlProjects(db_link IN VARCHAR2)
6889
6890 AS
6891
6892 v_DeleteProj VARCHAR2(5000);
6893 v_db_link VARCHAR2(128);
6894
6895 BEGIN
6896
6897 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
6898 log_timing_message('Start of rollback of cz_devl_projects table due to failure ');
6899 END IF;
6900
6901 IF ( cz_pb_mgr.v_models_to_be_exported_new.COUNT > 0 ) THEN
6902
6903 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
6904
6905 BEGIN
6906 v_DeleteProj := 'BEGIN FOR i IN cz_pb_mgr.v_models_to_be_exported_new.FIRST..cz_pb_mgr.v_models_to_be_exported_new.LAST LOOP ';
6907 v_DeleteProj := v_DeleteProj||' DELETE FROM cz_devl_projects'||v_db_link||' tgt ';
6908 v_DeleteProj := v_DeleteProj||' WHERE tgt.devl_project_id = cz_pb_mgr.v_models_to_be_exported_new(i) ';
6909 v_DeleteProj := v_DeleteProj||' AND NOT EXISTS( SELECT null FROM cz_rp_entries'||v_db_link;
6910 v_DeleteProj := v_DeleteProj||' WHERE object_type=''PRJ'' AND seeded_flag=''1'' AND object_id=tgt.devl_project_id)';
6911 v_DeleteProj := v_DeleteProj||' ; END LOOP; COMMIT; END; ';
6912
6913
6914 EXECUTE IMMEDIATE v_DeleteProj;
6915
6916 EXCEPTION
6917 WHEN OTHERS THEN
6918 RAISE;
6919 END;
6920 END IF;
6921
6922 COMMIT;
6923
6924 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
6925 log_timing_message('End of rollback of cz_devl_projects table due to failure ');
6926 END IF;
6927
6928 EXCEPTION
6929 WHEN OTHERS THEN
6930 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', 'cz_devl_projects');
6931 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6932
6933 END DeleteFromDevlProjects;
6934
6935 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6936 ----------------------procedure called from rollback data that deletes the rows
6937 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6938 ----------------------procedure called from rollback data that deletes the rows
6939 ----------------------inserted into a table during publication process
6940 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6941 primary_key IN VARCHAR2 ,
6942 db_link IN VARCHAR2 ,
6943 plsql_table_name IN VARCHAR2,
6944 primary_key_plsql_table IN cz_pb_mgr.t_ref
6945 )
6946 AS
6947
6948 v_DeleteString VARCHAR2(2000);
6949 v_db_link VARCHAR2(128);
6950
6951 BEGIN
6952 IF ( primary_key_plsql_table.COUNT > 0 ) THEN
6953 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
6954 BEGIN
6955 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table.FIRST||'..'||primary_key_plsql_table.LAST||' LOOP ';
6956 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link||' tgt ';
6957 v_DeleteString := v_DeleteString||' WHERE tgt.'||primary_key||' = '||plsql_table_name||'(m) ';
6958 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
6959 EXECUTE IMMEDIATE v_DeleteString;
6960 EXCEPTION
6961 WHEN OTHERS THEN
6962 RAISE;
6963 END;
6964 END IF;
6965 COMMIT;
6966 EXCEPTION
6967 WHEN OTHERS THEN
6968 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6969 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6970 END delete_from_table;
6971
6972 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6973 ----------------------procedure called from rollback data that deletes the rows
6974 ----------------------inserted into a table during publication process
6975
6976 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6977 primary_key1 IN VARCHAR2 ,
6978 primary_key2 IN VARCHAR2 ,
6979 primary_key3 IN VARCHAR2 ,
6980 db_link IN VARCHAR2 ,
6981 plsql_table_name1 IN VARCHAR2,
6982 plsql_table_name2 IN VARCHAR2,
6983 plsql_table_name3 IN VARCHAR2,
6984 primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6985
6986 AS
6987 v_cursor NUMBER;
6988 v_NumRows NUMBER;
6989 v_DeleteString VARCHAR2(10000);
6990 v_db_link VARCHAR2(128);
6991
6992 BEGIN
6993 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
6994
6995 BEGIN
6996 IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6997 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||' LOOP ';
6998 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link;
6999 v_DeleteString := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
7000 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
7001 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
7002 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
7003 EXECUTE IMMEDIATE v_DeleteString;
7004 END IF;
7005 EXCEPTION
7006 WHEN OTHERS THEN
7007 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
7008 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
7009 END;
7010 COMMIT;
7011 END;
7012
7013 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7014 ----------------------procedure called from rollback data that deletes the rows
7015 ----------------------inserted into a table during publication process
7016
7017 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
7018 primary_key1 IN VARCHAR2 ,
7019 primary_key2 IN VARCHAR2 ,
7020 db_link IN VARCHAR2 ,
7021 plsql_table_name1 IN VARCHAR2,
7022 plsql_table_name2 IN VARCHAR2,
7023 primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
7024
7025 AS
7026 v_cursor NUMBER;
7027 v_NumRows NUMBER;
7028 v_DeleteString VARCHAR2(10000);
7029 v_db_link VARCHAR2(128);
7030
7031 BEGIN
7032 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
7033
7034 BEGIN
7035 IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
7036 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||' LOOP ';
7037 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link;
7038 v_DeleteString := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
7039 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
7040 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
7041 EXECUTE IMMEDIATE v_DeleteString;
7042 END IF;
7043 EXCEPTION
7044 WHEN OTHERS THEN
7045 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
7046 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
7047 END;
7048 COMMIT;
7049 END;
7050
7051 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7052 ----------------------procedure called from rollback data that deletes the rows
7053 ----------------------inserted into a table during publication process
7054
7055 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
7056 primary_key1 IN VARCHAR2 ,
7057 primary_key2 IN VARCHAR2 ,
7058 primary_key3 IN VARCHAR2 ,
7059 primary_key4 IN VARCHAR2 ,
7060 db_link IN VARCHAR2 ,
7061 plsql_table_name1 IN VARCHAR2,
7062 plsql_table_name2 IN VARCHAR2,
7063 plsql_table_name3 IN VARCHAR2,
7064 plsql_table_name4 IN VARCHAR2,
7065 primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
7066
7067 AS
7068 v_cursor NUMBER;
7069 v_NumRows NUMBER;
7070 v_DeleteString VARCHAR2(10000);
7071 v_db_link VARCHAR2(128);
7072
7073 BEGIN
7074 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
7075
7076 BEGIN
7077 IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
7078 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||' LOOP ';
7079 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link;
7080 v_DeleteString := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
7081 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
7082 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
7083 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key4||'='||plsql_table_name4||'(m) ';
7084 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
7085 EXECUTE IMMEDIATE v_DeleteString;
7086 END IF;
7087 EXCEPTION
7088 WHEN OTHERS THEN
7089 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
7090 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
7091 END;
7092 COMMIT;
7093 END;
7094
7095 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7096 ---------procedure that deletes data of single index arrays
7097 PROCEDURE delete_from_idx_tables(
7098 p_table_name IN VARCHAR2
7099 ,p_primary_key IN VARCHAR2
7100 ,p_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
7101 ,p_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
7102 )
7103 AS
7104 v_deletestring VARCHAR2(2000);
7105 v_idx_id NUMBER;
7106 BEGIN
7107 IF (p_old_array.COUNT > 0)
7108 THEN
7109 FOR i IN p_old_array.FIRST .. p_old_array.LAST
7110 LOOP
7111 v_idx_id := p_idx_array(p_old_array(i));
7112 v_deletestring := ' delete from ' || p_table_name || v_db_link || ' tgt ';
7113 v_deletestring := v_deletestring || ' WHERE tgt.' || p_primary_key || ' = :1';
7114
7115 EXECUTE IMMEDIATE v_deletestring
7116 USING v_idx_id;
7117
7118 IF (MOD(i, cz_pb_mgr.record_commit_size) = 0)
7119 THEN
7120 COMMIT;
7121 END IF;
7122 END LOOP;
7123 END IF;
7124
7125 COMMIT;
7126 EXCEPTION
7127 WHEN OTHERS
7128 THEN
7129 cz_pb_mgr.v_err_message := 'Error during rollback of ' || p_table_name || ' : ' || SQLERRM;
7130 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
7131 END;
7132
7133 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7134 --------in the model publication process
7135 --------a model is published in its entirety
7136 --------if an error occurs during the publishing
7137 --------process the data that has been committed
7138 --------on the target server is rolled back
7139 PROCEDURE rollback_data(p_db_link IN VARCHAR2)
7140 AS
7141 v_insert_string VARCHAR2(2000) := '';
7142 v_database_link VARCHAR2(128);
7143
7144 --bug 1170415
7145 -- This procedure was introduced to remove template related ui actions from ui actions array
7146 -- in case publication failure occurs after successful insertion of ui template related data
7147 -- to address above Sun issue
7148 PROCEDURE refine_ui_action_array IS
7149 BEGIN
7150
7151
7152 --This check is added as a part of Sprint-2 and is an existing issue throws, index or value
7153 --error while rollback when there is no ui action for a given ui
7154
7155 IF ( cz_pb_mgr.g_ui_actns_ui_uidef_ref.COUNT > 0) THEN
7156
7157 FOR i in cz_pb_mgr.g_ui_actns_ui_uidef_ref.FIRST .. cz_pb_mgr.g_ui_actns_ui_uidef_ref.LAST
7158 LOOP
7159 IF (cz_pb_mgr.g_ui_actns_ui_uidef_ref(i) = 1) THEN
7160 log_timing_message('Skipping rollback of UI action: ' || cz_pb_mgr.g_ui_actns_ui_act_id_ref(i) ||
7161 ' and ui_def_id: ' || cz_pb_mgr.g_ui_actns_ui_uidef_ref(i));
7162 cz_pb_mgr.g_ui_actns_ui_uidef_ref.DELETE(i);
7163 cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE(i);
7164 END IF;
7165 END LOOP;
7166
7167 END IF;
7168 END;
7169
7170 BEGIN
7171 v_database_link := LTRIM(RTRIM(p_db_link));
7172
7173 IF ((cz_pb_mgr.v_server_id IS NULL) OR(v_database_link = '@'))
7174 THEN
7175 v_database_link := NULL;
7176 END IF;
7177
7178 delete_from_table('cz_ps_nodes', 'ps_node_id', v_database_link, 'cz_pb_mgr.v_cz_ps_nodes_new_tbl', cz_pb_mgr.v_cz_ps_nodes_new_tbl);
7179 delete_from_table('cz_ps_prop_vals', 'ps_node_id', v_database_link, 'cz_pb_mgr.v_cz_ps_nodes_new_tbl', cz_pb_mgr.v_cz_ps_nodes_new_tbl);
7180 --SKM:Bug-13437555 Caling own procedure for deleting from cz_devl_projects table.
7181
7182 DeleteFromDevlProjects(v_database_link);
7183
7184 -- delete_from_table('cz_devl_projects'
7185 -- ,'devl_project_id'
7186 -- ,v_database_link
7187 -- ,'cz_pb_mgr.v_models_to_be_exported_new'
7188 -- ,cz_pb_mgr.v_models_to_be_exported_new
7189 -- );
7190 delete_from_table('cz_ui_defs', 'ui_def_id', v_database_link, 'cz_pb_mgr.v_cz_ui_defs_new_ref', cz_pb_mgr.v_cz_ui_defs_new_ref);
7191 delete_from_table('cz_ui_properties', 'ui_def_id', v_database_link, 'cz_pb_mgr.v_cz_ui_defs_new_ref', cz_pb_mgr.v_cz_ui_defs_new_ref);
7192 delete_from_table('cz_ui_nodes', 'ui_node_id', v_database_link, 'cz_pb_mgr.v_cz_ui_nodes_new_ref', cz_pb_mgr.v_cz_ui_nodes_new_ref);
7193 delete_from_table('cz_ui_node_props', 'ui_node_id', v_database_link, 'cz_pb_mgr.v_cz_ui_nodes_new_ref', cz_pb_mgr.v_cz_ui_nodes_new_ref);
7194 delete_from_table('cz_model_ref_expls'
7195 ,'model_ref_expl_id'
7196 ,v_database_link
7197 ,'cz_pb_mgr.v_cz_model_ref_expls_new_ref'
7198 ,cz_pb_mgr.v_cz_model_ref_expls_new_ref
7199 );
7200 delete_from_table('cz_lce_headers', 'lce_header_id', v_database_link, 'cz_pb_mgr.v_cz_lce_headers_new_ref', cz_pb_mgr.v_cz_lce_headers_new_ref);
7201 delete_from_table('cz_rules', 'rule_id', v_database_link, 'cz_pb_mgr.v_cz_rules_rule_id_new_ref', cz_pb_mgr.v_cz_rules_rule_id_new_ref);
7202 delete_from_table('cz_des_chart_features'
7203 ,'rule_id'
7204 ,v_database_link
7205 ,'cz_pb_mgr.v_cz_des_feature_rid_new_ref'
7206 ,cz_pb_mgr.v_cz_des_feature_rid_new_ref
7207 );
7208 delete_from_table('cz_des_chart_cells'
7209 ,'rule_id'
7210 ,v_database_link
7211 ,'cz_pb_mgr.v_cz_des_cells_rule_id_new_ref'
7212 ,cz_pb_mgr.v_cz_des_cells_rule_id_new_ref
7213 );
7214
7215 delete_from_table('cz_ui_pages','ui_def_id',v_database_link,'cz_pb_mgr.g_cz_ui_pages_ui_def_ref',cz_pb_mgr.g_cz_ui_pages_ui_def_ref);
7216 delete_from_table('cz_ui_page_elements','ui_def_id','page_id','element_id',v_database_link,'cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref','cz_pb_mgr.g_ui_ps_maps_page_id_tbl','cz_pb_mgr.g_ui_ps_maps_element_tbl',cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref);
7217 delete_from_table('cz_ui_page_refs','ui_def_id','page_set_id','page_ref_id',v_database_link,'cz_pb_mgr.g_page_refs_ui_def_new_ref','cz_pb_mgr.g_page_refs_pg_set_ref','cz_pb_mgr.g_page_refs_pg_ref_ref',cz_pb_mgr.g_page_refs_ui_def_new_ref);
7218 delete_from_table('cz_ui_page_sets','ui_def_id','page_set_id',v_database_link,'cz_pb_mgr.g_page_sets_ui_ref','cz_pb_mgr.g_page_sets_pg_tbl',cz_pb_mgr.g_page_sets_ui_ref);
7219 delete_from_table('cz_ui_refs','ui_def_id','model_ref_expl_id',v_database_link,'cz_pb_mgr.g_ui_refs_new_ui_def_ref','cz_pb_mgr.g_ui_refs_expl_id_ref',cz_pb_mgr.g_ui_refs_new_ui_def_ref);
7220 delete_from_table('cz_ui_cont_type_templs','ui_def_id','content_type',v_database_link,'cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref','cz_pb_mgr.l_cnt_typ_tmpls_cont_ref',cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref);
7221
7222 --bug 11700415 skip rollback for ref templates and templ actions depending on global variable
7223 IF NOT g_skip_templ_rollback THEN
7224 delete_from_table('cz_ui_ref_templates','template_id','template_ui_def_id',
7225 'ref_template_id','ref_template_ui_def_id',v_database_link,'cz_pb_mgr.g_TEMPLATE_ID_ref','cz_pb_mgr.g_TEMPLATE_UI_ref',
7226 'cz_pb_mgr.g_REF_TEMPLATE_ID_ref','cz_pb_mgr.g_REF_TEMPL_UI_ref',cz_pb_mgr.g_TEMPLATE_ID_ref);
7227 END IF;
7228 --If UI action for templates inserted refine the array by removing action related to templates
7229 IF g_skip_templaction_rollback THEN
7230 refine_ui_action_array;
7231 END IF;
7232
7233 delete_from_table('cz_ui_actions','ui_def_id','ui_action_id',v_database_link,'cz_pb_mgr.g_ui_actns_ui_uidef_ref','cz_pb_mgr.g_ui_actns_ui_act_id_ref',cz_pb_mgr.g_ui_actns_ui_uidef_ref);
7234 delete_from_table('cz_ui_images','ui_def_id','image_usage_code','entity_code',v_database_link,'cz_pb_mgr.l_ui_images_ui_ref','cz_pb_mgr.l_ui_images_usg_tbl','cz_pb_mgr.l_ui_images_enty_tbl',cz_pb_mgr.l_ui_images_ui_ref);
7235 delete_from_table('cz_signatures','signature_id',v_database_link,'cz_pb_mgr.v_sig_new_ref',cz_pb_mgr.v_sig_new_ref);
7236 delete_from_table('cz_signature_arguments','argument_signature_id','argument_index',v_database_link,'cz_pb_mgr.v_arg_sig_tbl','cz_pb_mgr.v_arg_ind_old_tbl',cz_pb_mgr.v_arg_sig_tbl);
7237 delete_from_table('cz_func_comp_specs','func_comp_id',v_database_link,'cz_pb_mgr.v_cz_func_comp_new_ref',cz_pb_mgr.v_cz_func_comp_new_ref);
7238 delete_from_table('cz_populators','populator_id',v_database_link,'cz_pb_mgr.v_populators_new_id_ref',cz_pb_mgr.v_populators_new_id_ref);
7239 delete_from_table('cz_filter_sets','filter_set_id',v_database_link,'cz_pb_mgr.v_filter_sets_new_id_ref',cz_pb_mgr.v_filter_sets_new_id_ref);
7240 delete_from_table('cz_archives','archive_id',v_database_link,'cz_pb_mgr.g_archives_new_ref',cz_pb_mgr.g_archives_new_ref);
7241
7242 delete_from_table('cz_archives','archive_id',v_database_link,'cz_pb_mgr.mm_v_ht_sync_archives',cz_pb_mgr.mm_v_ht_sync_archives);
7243
7244 delete_from_table('cz_archive_refs','archive_id','devl_project_id',v_database_link,'cz_pb_mgr.g_archive_id_ref','cz_pb_mgr.g_devl_proj_ref',cz_pb_mgr.g_archive_id_ref);
7245 delete_from_table('cz_localized_texts','intl_text_id',v_database_link,'cz_pb_mgr.v_cz_intl_text_new_ref',cz_pb_mgr.v_cz_intl_text_new_ref);
7246
7247 delete_from_idx_tables('cz_rule_folders', 'rule_folder_id', cz_pb_mgr.v_cz_folders_id_old_ref, cz_pb_mgr.v_cz_folders_id_idx_ref);
7248 delete_from_idx_tables('cz_expression_nodes', 'expr_node_id', cz_pb_mgr.v_cz_enodes_enode_id_old_ref, cz_pb_mgr.v_cz_enodes_enode_id_idx_ref);
7249
7250 DELETE FROM cz_pb_model_exports
7251 WHERE publication_id = cz_pb_mgr.v_publication_id;
7252
7253 COMMIT;
7254 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7255 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', cz_pb_mgr.v_sql_err_msg);
7256 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ROLLBACKDATA', SQLCODE);
7257 EXCEPTION
7258 WHEN OTHERS
7259 THEN
7260 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7261 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_ROLLBACK_ERR', 'SQLERRM', SQLERRM);
7262 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
7263 RAISE;
7264 END rollback_data;
7265
7266 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7267 -----------procedure updates the status in cz_model_publications and cz_pb_model_exports
7268 -----------@p_publication_id : source publication id
7269 -----------@p_status : publication status
7270 -----------@p_link : database link name
7271 -----------@p_models_exported : source models that have entries in model exports
7272 -----------@x_status : publication status parameter
7273 PROCEDURE update_pb_status(
7274 p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
7275 ,p_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
7276 ,p_models_exported IN OUT NOCOPY cz_pb_mgr.t_ref
7277 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
7278 )
7279 AS
7280 BEGIN
7281 -----update status on the source. p_link is null
7282 update_publication_status(p_publication_id, p_status, ' ');
7283
7284 IF (p_models_exported.COUNT > 0)
7285 THEN
7286 FOR i IN p_models_exported.FIRST .. p_models_exported.LAST
7287 LOOP
7288 UPDATE cz_pb_model_exports t
7289 SET t.status = p_status
7290 WHERE t.model_id = p_models_exported(i) AND t.server_id = cz_pb_mgr.v_server_id AND t.publication_id = p_publication_id;
7291 END LOOP;
7292
7293 COMMIT;
7294 END IF;
7295
7296 -----set status for concurrent manager
7297 IF (x_status = PUBLICATION_ERROR)
7298 THEN
7299 cz_pb_mgr.global_export_retcode := 2;
7300 END IF;
7301 EXCEPTION
7302 WHEN OTHERS
7303 THEN
7304 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
7305 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDPBSTATUS', SQLCODE);
7306 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7307 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
7308 RAISE;
7309 END update_pb_status;
7310
7311 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7312 --------function to validate the source and target schemas.
7313 --------a source model can be published on a target server
7314 --------having the same major and minor schema versions
7315 --------v_count when 0 is a failure else 1 indicates success
7316 FUNCTION validate_schema(target_server_id PLS_INTEGER)
7317 RETURN NUMBER
7318 IS
7319 v_source_major_version cz_db_settings.VALUE%TYPE;
7320 v_source_minor_version cz_db_settings.VALUE%TYPE;
7321 v_target_major_version cz_db_settings.VALUE%TYPE;
7322 v_target_minor_version cz_db_settings.VALUE%TYPE;
7323
7324 CURSOR db_link_cur(p_server_id PLS_INTEGER)
7325 IS
7326 SELECT local_name, fndnam_link_name
7327 FROM cz_servers
7328 WHERE server_local_id = p_server_id;
7329
7330 v_link_record db_link_cur%ROWTYPE;
7331 v_str VARCHAR2(4000);
7332 db_schema_compare_cur ref_cursor;
7333 v_count PLS_INTEGER := 0;
7334 v_db_link cz_servers.fndnam_link_name%TYPE;
7335 BEGIN
7336 OPEN db_link_cur(target_server_id);
7337
7338 LOOP
7339 FETCH db_link_cur
7340 INTO v_link_record;
7341
7342 EXIT WHEN db_link_cur%NOTFOUND;
7343 v_db_link := '@' || v_link_record.fndnam_link_name;
7344 cz_pb_mgr.v_server_local_name := v_link_record.local_name;
7345 END LOOP;
7346
7347 CLOSE db_link_cur;
7348
7349 IF LTRIM(RTRIM(v_db_link)) = '@'
7350 THEN
7351 v_count := 1;
7352 ELSE
7353 OPEN db_schema_compare_cur FOR ' select count(*)'
7354 || ' '
7355 || 'from cz_db_settings,'
7356 || ' '
7357 || 'cz_db_settings'
7358 || v_db_link
7359 || ' tgt'
7360 || ' '
7361 || 'where cz_db_settings.setting_id = tgt.setting_id'
7362 || ' '
7363 || 'and cz_db_settings.value = tgt.value'
7364 || ' '
7365 || 'and cz_db_settings.setting_id = ''MAJOR_VERSION'''
7366 || ' '
7367 || 'INTERSECT'
7368 || ' '
7369 || 'select count(*)'
7370 || ' '
7371 || 'from cz_db_settings,'
7372 || ' '
7373 || 'cz_db_settings'
7374 || v_db_link
7375 || ' tgt'
7376 || ' '
7377 || 'where cz_db_settings.setting_id = tgt.setting_id'
7378 || ' '
7379 || 'and cz_db_settings.value = tgt.value'
7380 || ' '
7381 || 'and cz_db_settings.setting_id = ''MINOR_VERSION'' ';
7382
7383 LOOP
7384 FETCH db_schema_compare_cur
7385 INTO v_count;
7386
7387 EXIT WHEN db_schema_compare_cur%NOTFOUND;
7388 END LOOP;
7389
7390 CLOSE db_schema_compare_cur;
7391 END IF;
7392
7393 --------set commit size variable
7394 BEGIN
7395 SELECT VALUE
7396 INTO cz_pb_mgr.record_commit_size
7397 FROM cz_db_settings
7398 WHERE cz_db_settings.setting_id = record_commit_str;
7399 EXCEPTION
7400 WHEN OTHERS
7401 THEN
7402 cz_pb_mgr.record_commit_size := 500;
7403 END;
7404
7405 RETURN v_count;
7406 EXCEPTION
7407 WHEN NO_DATA_FOUND
7408 THEN
7409 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_LINK_NAME');
7410 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
7411 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7412 RETURN v_count;
7413 WHEN OTHERS
7414 THEN
7415 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_VALIDATION_ERR');
7416 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
7417 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7418 RETURN v_count;
7419 END validate_schema;
7420
7421 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7422 ------------ procedures for refreshing item sub-schema
7423 PROCEDURE load_usages
7424 AS
7425 l_sql_string VARCHAR2(32000);
7426 BEGIN
7427 cz_pb_mgr.v_model_usages_tbl.DELETE;
7428 cz_pb_mgr.v_usages_lang_tbl.DELETE;
7429
7430 BEGIN
7431 SELECT model_usage_id
7432 BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl
7433 FROM cz_model_usages;
7434 EXCEPTION
7435 WHEN NO_DATA_FOUND
7436 THEN
7437 cz_pb_mgr.v_err_message := 'No model usages found';
7438 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7439 WHEN OTHERS
7440 THEN
7441 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
7442 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7443 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7444 RAISE;
7445 END;
7446
7447 IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
7448 THEN
7449 l_sql_string :=
7450 'BEGIN '
7451 || ' DELETE FROM CZ_MODEL_USAGES'
7452 || cz_pb_mgr.v_db_link
7453 || '; '
7454 || ' '
7455 || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
7456 || ' '
7457 || 'LOOP'
7458 || ' '
7459 || 'INSERT INTO cz_model_usages'
7460 || cz_pb_mgr.v_db_link
7461 || ' '
7462 || '(MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE)'
7463 || ' '
7464 || 'SELECT MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE FROM cz_model_usages t'
7465 || ' '
7466 || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i);'
7467 || ' '
7468 || 'END LOOP;'
7469 || ' '
7470 || 'END;';
7471
7472 EXECUTE IMMEDIATE l_sql_string;
7473 END IF;
7474
7475 cz_pb_mgr.v_model_usages_tbl.DELETE;
7476 cz_pb_mgr.v_usages_lang_tbl.DELETE;
7477
7478 BEGIN
7479 SELECT model_usage_id, LANGUAGE
7480 BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl, v_usages_lang_tbl
7481 FROM cz_model_usages_tl;
7482 EXCEPTION
7483 WHEN NO_DATA_FOUND
7484 THEN
7485 cz_pb_mgr.v_err_message := 'No model usages translations found';
7486 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7487 WHEN OTHERS
7488 THEN
7489 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages_tl', 'SQLERRM', SQLERRM);
7490 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
7491 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7492 RAISE;
7493 END;
7494
7495 IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
7496 THEN
7497 EXECUTE IMMEDIATE 'BEGIN'
7498 || ' '
7499 || 'DELETE FROM CZ_MODEL_USAGES_TL'
7500 || cz_pb_mgr.v_db_link
7501 || ';'
7502 || ' '
7503 || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
7504 || ' '
7505 || 'LOOP'
7506 || ' '
7507 || 'BEGIN'
7508 || ' '
7509 || 'INSERT INTO cz_model_usages_tl'
7510 || cz_pb_mgr.v_db_link
7511 || ' '
7512 || '(MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION)'
7513 || ' '
7514 || 'SELECT MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION FROM cz_model_usages_tl t'
7515 || ' '
7516 || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i)'
7517 || ' '
7518 || 'and t.language=cz_pb_mgr.v_usages_lang_tbl(i);'
7519 || ' '
7520 || 'END;'
7521 || ' '
7522 || 'END LOOP;'
7523 || ' '
7524 || 'END;';
7525 END IF;
7526
7527 cz_pb_mgr.v_model_usages_tbl.DELETE;
7528 cz_pb_mgr.v_usages_lang_tbl.DELETE;
7529 EXCEPTION
7530 WHEN OTHERS
7531 THEN
7532 ROLLBACK;
7533 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
7534 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USAGES', SQLCODE);
7535 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
7536 RAISE;
7537 END load_usages;
7538
7539 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7540 ----procedure that checks if a model has been published earlier
7541 ----@p_publication_id : publication_id of the publication request
7542 ----x_record_count : returns count of earlier publications
7543 PROCEDURE chk_if_aleady_published(p_publication_id IN cz_model_publications.publication_id%TYPE, x_record_count IN OUT NOCOPY NUMBER)
7544 AS
7545 BEGIN
7546 IF (g_object_type = MODEL_PUBLICATION)
7547 THEN
7548 SELECT COUNT(*)
7549 INTO x_record_count
7550 FROM cz_model_publications z
7551 WHERE z.object_id = (SELECT object_id
7552 FROM cz_model_publications
7553 WHERE cz_model_publications.publication_id = p_publication_id)
7554 AND z.server_id = (SELECT server_id
7555 FROM cz_model_publications
7556 WHERE cz_model_publications.publication_id = p_publication_id)
7557 AND z.model_last_struct_update =
7558 (SELECT last_struct_update
7559 FROM cz_devl_projects
7560 WHERE cz_devl_projects.devl_project_id =
7561 (SELECT object_id
7562 FROM cz_model_publications
7563 WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = '0'))
7564 AND z.export_status IN('OK', 'PUP')
7565 AND z.source_target_flag = g_source_flag
7566 AND z.deleted_flag = record_not_deleted;
7567 ELSIF(g_object_type = template_publication)
7568 THEN
7569 SELECT COUNT(*)
7570 INTO x_record_count
7571 FROM cz_model_publications z
7572 WHERE z.object_id = (SELECT object_id
7573 FROM cz_model_publications
7574 WHERE cz_model_publications.publication_id = p_publication_id)
7575 AND z.server_id = (SELECT server_id
7576 FROM cz_model_publications
7577 WHERE cz_model_publications.publication_id = p_publication_id)
7578 AND z.export_status IN('OK', 'PUP')
7579 AND z.source_target_flag = g_source_flag
7580 AND z.deleted_flag = record_not_deleted;
7581 END IF;
7582 EXCEPTION
7583 WHEN OTHERS
7584 THEN
7585 RAISE;
7586 END chk_if_aleady_published;
7587
7588 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7589 -----procedure that gets the date on which the model was last published
7590 -----@p_model_id: model_id on the publication request
7591 -----@p_server_id : server_id on the publication request
7592 -----x_last_xfr_activity : last published date
7593 PROCEDURE get_last_xfr_activity(
7594 p_model_id IN cz_model_publications.model_id%TYPE
7595 ,p_server_id IN cz_model_publications.server_id%TYPE
7596 ,x_last_xfr_activity IN OUT NOCOPY DATE
7597 )
7598 AS
7599 BEGIN
7600 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
7601 THEN
7602 SELECT last_xfr_activity
7603 INTO x_last_xfr_activity
7604 FROM cz_pb_model_exports
7605 WHERE cz_pb_model_exports.export_id =
7606 (SELECT MAX(export_id)
7607 FROM cz_pb_model_exports z
7608 WHERE z.root_model_id = p_model_id
7609 AND z.server_id = p_server_id
7610 AND z.status = 'OK'
7611 AND z.publication_id IN(
7612 SELECT publication_id
7613 FROM cz_model_publications
7614 WHERE export_status IN('OK', 'PUP')
7615 AND server_id = p_server_id
7616 AND UPPER(publication_mode) = cz_model_migration_pvt.mode_migration));
7617 --SPUPPALA bug#7116052 7-AUG-2009
7618 ELSE
7619 SELECT last_xfr_activity
7620 INTO x_last_xfr_activity
7621 FROM cz_pb_model_exports
7622 WHERE cz_pb_model_exports.export_id =
7623 (SELECT MAX(export_id)
7624 FROM cz_pb_model_exports z
7625 WHERE z.root_model_id = p_model_id
7626 AND z.server_id = p_server_id
7627 AND z.status = 'OK'
7628 AND z.publication_id IN(
7629 SELECT publication_id
7630 FROM cz_model_publications
7631 WHERE export_status IN('OK', 'PUP')
7632 AND server_id = p_server_id
7633 AND UPPER(publication_mode) <> cz_model_migration_pvt.mode_migration));
7634 --SPUPPALA bug#7116052 7-AUG-2009
7635 END IF;
7636 EXCEPTION
7637 WHEN OTHERS
7638 THEN
7639 x_last_xfr_activity := NULL;
7640 END get_last_xfr_activity;
7641
7642 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7643 -----procedure that retrieves the last update date from cz_expression nodes
7644 -----required to check if rules have been changed since it was last published
7645 PROCEDURE get_max_expr_date(p_model_id cz_model_publications.model_id%TYPE, x_expr_node_date IN OUT NOCOPY DATE)
7646 AS
7647 BEGIN
7648 SELECT MAX(last_update_date)
7649 INTO x_expr_node_date
7650 FROM cz_expression_nodes t
7651 WHERE t.deleted_flag = record_not_deleted
7652 AND t.expr_type <> 208
7653 AND EXISTS(SELECT 1
7654 FROM cz_rules
7655 WHERE rule_id = t.rule_id AND devl_project_id = p_model_id AND deleted_flag = record_not_deleted)
7656 AND t.deleted_flag = record_not_deleted
7657 AND t.expr_type <> 208;
7658 EXCEPTION
7659 WHEN OTHERS
7660 THEN
7661 x_expr_node_date := cz_utils.epoch_begin;
7662 END get_max_expr_date;
7663
7664 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7665 -----procedure that retrieves the last_struct_update date
7666 -----required to check if ps structure been changed since model was last published
7667 PROCEDURE get_last_struct_date(p_model_id cz_model_publications.model_id%TYPE, x_last_struct_date IN OUT NOCOPY DATE)
7668 AS
7669 BEGIN
7670 SELECT last_struct_update
7671 INTO x_last_struct_date
7672 FROM cz_devl_projects t
7673 WHERE t.deleted_flag = record_not_deleted AND t.devl_project_id = p_model_id;
7674 EXCEPTION
7675 WHEN OTHERS
7676 THEN
7677 x_last_struct_date := cz_utils.epoch_begin;
7678 END get_last_struct_date;
7679
7680 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7681 -----procedure that returns the source ui_defs for export
7682 -----@p_model_id : model that is exported
7683 -----@p_src_models : source models array
7684 -----x_ui_def_ref : output of source ui defs
7685 PROCEDURE get_source_uis(
7686 p_model_id IN cz_model_publications.model_id%TYPE
7687 ,p_src_models IN cz_pb_mgr.t_ref
7688 ,x_ui_def_ref IN OUT NOCOPY cz_pb_mgr.t_ref
7689 )
7690 AS
7691 v_ui_def_count NUMBER := 0;
7692 v_src_uis_tbl cz_pb_mgr.t_ref;
7693 v_cz_ui_defs_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
7694 l_export_model_id cz_devl_projects.devl_project_id%TYPE;
7695 BEGIN
7696 IF (p_src_models.COUNT > 0)
7697 THEN
7698 x_ui_def_ref.DELETE;
7699
7700 FOR i IN p_src_models.FIRST .. p_src_models.LAST
7701 LOOP
7702 l_export_model_id := p_src_models(i);
7703 v_src_uis_tbl.DELETE;
7704
7705 BEGIN
7706 SELECT cz_ui_defs.ui_def_id
7707 BULK COLLECT INTO v_src_uis_tbl
7708 FROM cz_ui_defs
7709 WHERE cz_ui_defs.devl_project_id = l_export_model_id
7710 AND cz_ui_defs.deleted_flag = '0'
7711 AND cz_ui_defs.ui_style <> 7
7712 AND cz_ui_defs.NAME <> 'MUID';
7713 EXCEPTION
7714 WHEN OTHERS
7715 THEN
7716 cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
7717 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
7718 END;
7719
7720 IF (v_src_uis_tbl.COUNT > 0)
7721 THEN
7722 v_ui_def_count := x_ui_def_ref.COUNT;
7723
7724 FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7725 LOOP
7726 IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7727 THEN
7728 v_ui_def_count := v_ui_def_count + 1;
7729 x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7730 v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7731 END IF;
7732 END LOOP;
7733 END IF;
7734
7735 v_src_uis_tbl.DELETE;
7736
7737 BEGIN
7738 SELECT DISTINCT ui_def_ref_id
7739 BULK COLLECT INTO v_src_uis_tbl
7740 FROM cz_ui_nodes
7741 WHERE cz_ui_nodes.ui_def_id IN(
7742 SELECT cz_ui_defs.ui_def_id
7743 FROM cz_ui_defs
7744 WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7745 AND cz_ui_defs.NAME <> 'MUID')
7746 AND cz_ui_nodes.ui_def_ref_id IN(
7747 SELECT cz_ui_defs.ui_def_id
7748 FROM cz_ui_defs
7749 WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7750 AND cz_ui_defs.NAME <> 'MUID')
7751 AND cz_ui_nodes.deleted_flag = '0'
7752 AND cz_ui_nodes.ui_def_ref_id IS NOT NULL;
7753 EXCEPTION
7754 WHEN OTHERS
7755 THEN
7756 cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
7757 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
7758 END;
7759
7760 IF (v_src_uis_tbl.COUNT > 0)
7761 THEN
7762 v_ui_def_count := x_ui_def_ref.COUNT;
7763
7764 FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7765 LOOP
7766 IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7767 THEN
7768 v_ui_def_count := v_ui_def_count + 1;
7769 x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7770 v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7771 END IF;
7772 END LOOP;
7773 END IF;
7774 END LOOP; /* end loop of FOR I IN p_src_models.FIRST */
7775 END IF; /* end if of (p_src_models.COUNT > 0) */
7776 EXCEPTION
7777 WHEN OTHERS
7778 THEN
7779 RAISE;
7780 END get_source_uis;
7781
7782 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7783 ----procedure that returns the max last_update_date of ui schema
7784 PROCEDURE get_max_ui_date(p_ui_def_id IN cz_model_publications.ui_def_id%TYPE, x_max_update_date IN OUT NOCOPY DATE)
7785 AS
7786 v_ui_def_id_date cz_ui_defs.last_update_date%TYPE;
7787 v_ui_node_id_date cz_ui_nodes.last_update_date%TYPE;
7788 v_ui_props_date cz_ui_nodes.last_update_date%TYPE;
7789 v_ui_node_props_date cz_ui_nodes.last_update_date%TYPE;
7790 v_ui_node_intl_date cz_ui_nodes.last_update_date%TYPE;
7791 v_initialized_date DATE;
7792 v_ui_pages_date DATE;
7793 v_ui_pages_capt_date DATE;
7794 v_ui_page_sets_date DATE;
7795 v_ui_page_refs_date DATE;
7796 v_ui_pg_ref_capt_date DATE;
7797 v_ui_refs_date DATE;
7798 v_ui_templs_date DATE;
7799 v_ui_cont_templs_date DATE;
7800 v_ui_actions_date DATE;
7801 v_ui_images_date DATE;
7802 v_page_elements_date DATE;
7803
7804 CURSOR ui_def_cur(ui_ui_def_id NUMBER)
7805 IS
7806 SELECT last_update_date
7807 FROM cz_ui_defs
7808 WHERE cz_ui_defs.ui_def_id = ui_ui_def_id AND cz_ui_defs.deleted_flag = '0'
7809 ORDER BY last_update_date DESC;
7810
7811 CURSOR ui_nodes_cur(node_ui_def_id NUMBER)
7812 IS
7813 SELECT last_update_date
7814 FROM cz_ui_nodes
7815 WHERE cz_ui_nodes.ui_def_id = node_ui_def_id AND cz_ui_nodes.deleted_flag = '0'
7816 ORDER BY last_update_date DESC;
7817
7818 CURSOR ui_properties_cur(prop_ui_def_id NUMBER)
7819 IS
7820 SELECT last_update_date
7821 FROM cz_ui_properties
7822 WHERE cz_ui_properties.ui_def_id = prop_ui_def_id AND cz_ui_properties.deleted_flag = '0'
7823 ORDER BY last_update_date DESC;
7824
7825 CURSOR ui_node_props_cur(nodeprops_ui_def_id NUMBER)
7826 IS
7827 SELECT last_update_date
7828 FROM cz_ui_node_props
7829 WHERE cz_ui_node_props.ui_def_id = nodeprops_ui_def_id AND cz_ui_node_props.deleted_flag = '0'
7830 ORDER BY last_update_date DESC;
7831
7832 CURSOR ui_intl_texts_cur(p_ui_def_id NUMBER)
7833 IS
7834 SELECT last_update_date
7835 FROM cz_intl_texts
7836 WHERE intl_text_id IN(SELECT f.tool_tip_id
7837 FROM cz_ui_nodes f
7838 WHERE f.ui_def_id = p_ui_def_id AND f.deleted_flag = '0'
7839 UNION
7840 SELECT g.caption_id
7841 FROM cz_ui_nodes g
7842 WHERE g.ui_def_id = p_ui_def_id AND g.deleted_flag = '0')
7843 ORDER BY last_update_date DESC;
7844
7845 CURSOR ui_pages_cur(ui_pages_def_id NUMBER)
7846 IS
7847 SELECT last_update_date
7848 FROM cz_ui_pages
7849 WHERE cz_ui_pages.ui_def_id = ui_pages_def_id
7850 ORDER BY last_update_date DESC;
7851
7852 CURSOR ui_pages_capt_cur(p_ui_def_id NUMBER)
7853 IS
7854 SELECT last_update_date
7855 FROM cz_intl_texts
7856 WHERE intl_text_id IN(SELECT caption_text_id
7857 FROM cz_ui_pages
7858 WHERE cz_ui_pages.ui_def_id = p_ui_def_id)
7859 ORDER BY last_update_date DESC;
7860
7861 CURSOR ui_page_sets_cur(p_ui_def_id NUMBER)
7862 IS
7863 SELECT last_update_date
7864 FROM cz_ui_page_sets
7865 WHERE cz_ui_page_sets.ui_def_id = p_ui_def_id AND cz_ui_page_sets.deleted_flag = '0'
7866 ORDER BY last_update_date DESC;
7867
7868 CURSOR ui_page_refs_cur(p_ui_def_id NUMBER)
7869 IS
7870 SELECT last_update_date
7871 FROM cz_ui_page_refs
7872 WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id AND cz_ui_page_refs.deleted_flag = '0'
7873 ORDER BY last_update_date DESC;
7874
7875 CURSOR ui_page_refs_capt_cur(p_ui_def_id NUMBER)
7876 IS
7877 SELECT last_update_date
7878 FROM cz_intl_texts
7879 WHERE intl_text_id IN(SELECT caption_text_id
7880 FROM cz_ui_page_refs
7881 WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id)
7882 ORDER BY last_update_date DESC;
7883
7884 CURSOR ui_refs_cur(p_ui_def_id NUMBER)
7885 IS
7886 SELECT last_update_date
7887 FROM cz_ui_refs
7888 WHERE cz_ui_refs.ui_def_id = p_ui_def_id AND cz_ui_refs.deleted_flag = '0'
7889 ORDER BY last_update_date DESC;
7890
7891 CURSOR ui_templs_cur(p_ui_def_id NUMBER)
7892 IS
7893 SELECT last_update_date
7894 FROM cz_ui_templates
7895 WHERE cz_ui_templates.ui_def_id = p_ui_def_id AND cz_ui_templates.deleted_flag = '0'
7896 ORDER BY last_update_date DESC;
7897
7898 CURSOR ui_cont_templs_cur(p_ui_def_id NUMBER)
7899 IS
7900 SELECT last_update_date
7901 FROM cz_ui_cont_type_templs
7902 WHERE cz_ui_cont_type_templs.ui_def_id = p_ui_def_id AND cz_ui_cont_type_templs.deleted_flag = '0'
7903 ORDER BY last_update_date DESC;
7904
7905 CURSOR ui_actions_cur(p_ui_def_id NUMBER)
7906 IS
7907 SELECT last_update_date
7908 FROM cz_ui_actions
7909 WHERE cz_ui_actions.ui_def_id = p_ui_def_id
7910 ORDER BY last_update_date DESC;
7911
7912 CURSOR ui_images_cur(p_ui_def_id NUMBER)
7913 IS
7914 SELECT last_update_date
7915 FROM cz_ui_images
7916 WHERE cz_ui_images.ui_def_id = p_ui_def_id
7917 ORDER BY last_update_date DESC;
7918 CURSOR ui_page_elements(p_ui_def_id NUMBER)
7919 IS
7920 SELECT last_update_date
7921 FROM cz_ui_page_elements
7922 WHERE cz_ui_page_elements.ui_def_id = p_ui_def_id
7923 ORDER BY last_update_date DESC;
7924 BEGIN
7925 v_initialized_date := cz_utils.epoch_begin;
7926 v_ui_def_id_date := v_initialized_date;
7927 v_ui_node_id_date := v_initialized_date;
7928 v_ui_props_date := v_initialized_date;
7929 v_ui_node_props_date := v_initialized_date;
7930 v_ui_node_intl_date := v_initialized_date;
7931 v_ui_pages_date := v_initialized_date;
7932 v_ui_pages_capt_date := v_initialized_date;
7933 v_ui_page_sets_date := v_initialized_date;
7934 v_ui_page_refs_date := v_initialized_date;
7935 v_ui_pg_ref_capt_date := v_initialized_date;
7936 v_ui_refs_date := v_initialized_date;
7937 v_ui_templs_date := v_initialized_date;
7938 v_ui_cont_templs_date := v_initialized_date;
7939 v_ui_actions_date := v_initialized_date;
7940 v_ui_images_date := v_initialized_date;
7941
7942 BEGIN
7943 OPEN ui_def_cur(p_ui_def_id);
7944
7945 LOOP
7946 FETCH ui_def_cur
7947 INTO v_ui_def_id_date;
7948
7949 EXIT WHEN ui_def_cur%NOTFOUND;
7950 EXIT WHEN ui_def_cur%ROWCOUNT = 1;
7951 END LOOP;
7952
7953 CLOSE ui_def_cur;
7954 EXCEPTION
7955 WHEN OTHERS
7956 THEN
7957 v_ui_def_id_date := cz_utils.epoch_begin;
7958
7959 CLOSE ui_def_cur;
7960 END;
7961
7962 BEGIN
7963 OPEN ui_nodes_cur(p_ui_def_id);
7964
7965 LOOP
7966 FETCH ui_nodes_cur
7967 INTO v_ui_node_id_date;
7968
7969 EXIT WHEN ui_nodes_cur%NOTFOUND;
7970 EXIT WHEN ui_nodes_cur%ROWCOUNT = 1;
7971 END LOOP;
7972
7973 CLOSE ui_nodes_cur;
7974 EXCEPTION
7975 WHEN OTHERS
7976 THEN
7977 v_ui_node_id_date := cz_utils.epoch_begin;
7978
7979 CLOSE ui_nodes_cur;
7980 END;
7981
7982 BEGIN
7983 OPEN ui_properties_cur(p_ui_def_id);
7984
7985 LOOP
7986 FETCH ui_properties_cur
7987 INTO v_ui_props_date;
7988
7989 EXIT WHEN ui_properties_cur%NOTFOUND;
7990 EXIT WHEN ui_properties_cur%ROWCOUNT = 1;
7991 END LOOP;
7992
7993 CLOSE ui_properties_cur;
7994 EXCEPTION
7995 WHEN OTHERS
7996 THEN
7997 v_ui_props_date := cz_utils.epoch_begin;
7998
7999 CLOSE ui_properties_cur;
8000 END;
8001
8002 BEGIN
8003 OPEN ui_node_props_cur(p_ui_def_id);
8004
8005 LOOP
8006 FETCH ui_node_props_cur
8007 INTO v_ui_node_props_date;
8008
8009 EXIT WHEN ui_node_props_cur%NOTFOUND;
8010 EXIT WHEN ui_node_props_cur%ROWCOUNT = 1;
8011 END LOOP;
8012
8013 CLOSE ui_node_props_cur;
8014 EXCEPTION
8015 WHEN OTHERS
8016 THEN
8017 v_ui_node_props_date := cz_utils.epoch_begin;
8018
8019 CLOSE ui_node_props_cur;
8020 END;
8021
8022 BEGIN
8023 OPEN ui_intl_texts_cur(p_ui_def_id);
8024
8025 LOOP
8026 FETCH ui_intl_texts_cur
8027 INTO v_ui_node_intl_date;
8028
8029 EXIT WHEN ui_intl_texts_cur%NOTFOUND;
8030 EXIT WHEN ui_intl_texts_cur%ROWCOUNT = 1;
8031 END LOOP;
8032
8033 CLOSE ui_intl_texts_cur;
8034 EXCEPTION
8035 WHEN OTHERS
8036 THEN
8037 v_ui_node_intl_date := cz_utils.epoch_begin;
8038
8039 CLOSE ui_intl_texts_cur;
8040 END;
8041
8042 BEGIN
8043 OPEN ui_pages_cur(p_ui_def_id);
8044
8045 LOOP
8046 FETCH ui_pages_cur
8047 INTO v_ui_pages_date;
8048
8049 EXIT WHEN ui_pages_cur%NOTFOUND;
8050 EXIT WHEN ui_pages_cur%ROWCOUNT = 1;
8051 END LOOP;
8052
8053 CLOSE ui_pages_cur;
8054 EXCEPTION
8055 WHEN OTHERS
8056 THEN
8057 v_ui_pages_date := cz_utils.epoch_begin;
8058
8059 CLOSE ui_pages_cur;
8060 END;
8061
8062 BEGIN
8063 OPEN ui_pages_capt_cur(p_ui_def_id);
8064
8065 LOOP
8066 FETCH ui_pages_capt_cur
8067 INTO v_ui_pages_capt_date;
8068
8069 EXIT WHEN ui_pages_capt_cur%NOTFOUND;
8070 EXIT WHEN ui_pages_capt_cur%ROWCOUNT = 1;
8071 END LOOP;
8072
8073 CLOSE ui_pages_capt_cur;
8074 EXCEPTION
8075 WHEN OTHERS
8076 THEN
8077 v_ui_pages_capt_date := cz_utils.epoch_begin;
8078
8079 CLOSE ui_pages_capt_cur;
8080 END;
8081
8082 BEGIN
8083 OPEN ui_page_sets_cur(p_ui_def_id);
8084
8085 LOOP
8086 FETCH ui_page_sets_cur
8087 INTO v_ui_page_sets_date;
8088
8089 EXIT WHEN ui_page_sets_cur%NOTFOUND;
8090 EXIT WHEN ui_page_sets_cur%ROWCOUNT = 1;
8091 END LOOP;
8092
8093 CLOSE ui_page_sets_cur;
8094 EXCEPTION
8095 WHEN OTHERS
8096 THEN
8097 v_ui_page_sets_date := cz_utils.epoch_begin;
8098
8099 CLOSE ui_page_sets_cur;
8100 END;
8101
8102 BEGIN
8103 OPEN ui_page_refs_cur(p_ui_def_id);
8104
8105 LOOP
8106 FETCH ui_page_refs_cur
8107 INTO v_ui_page_refs_date;
8108
8109 EXIT WHEN ui_page_refs_cur%NOTFOUND;
8110 EXIT WHEN ui_page_refs_cur%ROWCOUNT = 1;
8111 END LOOP;
8112
8113 CLOSE ui_page_refs_cur;
8114 EXCEPTION
8115 WHEN OTHERS
8116 THEN
8117 v_ui_page_refs_date := cz_utils.epoch_begin;
8118
8119 CLOSE ui_page_refs_cur;
8120 END;
8121
8122 BEGIN
8123 OPEN ui_page_refs_capt_cur(p_ui_def_id);
8124
8125 LOOP
8126 FETCH ui_page_refs_capt_cur
8127 INTO v_ui_pg_ref_capt_date;
8128
8129 EXIT WHEN ui_page_refs_capt_cur%NOTFOUND;
8130 EXIT WHEN ui_page_refs_capt_cur%ROWCOUNT = 1;
8131 END LOOP;
8132
8133 CLOSE ui_page_refs_capt_cur;
8134 EXCEPTION
8135 WHEN OTHERS
8136 THEN
8137 v_ui_pg_ref_capt_date := cz_utils.epoch_begin;
8138
8139 CLOSE ui_page_refs_capt_cur;
8140 END;
8141
8142 BEGIN
8143 OPEN ui_refs_cur(p_ui_def_id);
8144
8145 LOOP
8146 FETCH ui_refs_cur
8147 INTO v_ui_refs_date;
8148
8149 EXIT WHEN ui_refs_cur%NOTFOUND;
8150 EXIT WHEN ui_refs_cur%ROWCOUNT = 1;
8151 END LOOP;
8152
8153 CLOSE ui_refs_cur;
8154 EXCEPTION
8155 WHEN OTHERS
8156 THEN
8157 v_ui_refs_date := cz_utils.epoch_begin;
8158
8159 CLOSE ui_refs_cur;
8160 END;
8161
8162 BEGIN
8163 OPEN ui_templs_cur(p_ui_def_id);
8164
8165 LOOP
8166 FETCH ui_templs_cur
8167 INTO v_ui_templs_date;
8168
8169 EXIT WHEN ui_templs_cur%NOTFOUND;
8170 EXIT WHEN ui_templs_cur%ROWCOUNT = 1;
8171 END LOOP;
8172
8173 CLOSE ui_templs_cur;
8174 EXCEPTION
8175 WHEN OTHERS
8176 THEN
8177 v_ui_templs_date := cz_utils.epoch_begin;
8178
8179 CLOSE ui_templs_cur;
8180 END;
8181
8182 BEGIN
8183 OPEN ui_cont_templs_cur(p_ui_def_id);
8184
8185 LOOP
8186 FETCH ui_cont_templs_cur
8187 INTO v_ui_cont_templs_date;
8188
8189 EXIT WHEN ui_cont_templs_cur%NOTFOUND;
8190 EXIT WHEN ui_cont_templs_cur%ROWCOUNT = 1;
8191 END LOOP;
8192
8193 CLOSE ui_cont_templs_cur;
8194 EXCEPTION
8195 WHEN OTHERS
8196 THEN
8197 v_ui_cont_templs_date := cz_utils.epoch_begin;
8198
8199 CLOSE ui_cont_templs_cur;
8200 END;
8201
8202 BEGIN
8203 OPEN ui_actions_cur(p_ui_def_id);
8204
8205 LOOP
8206 FETCH ui_actions_cur
8207 INTO v_ui_actions_date;
8208
8209 EXIT WHEN ui_actions_cur%NOTFOUND;
8210 EXIT WHEN ui_actions_cur%ROWCOUNT = 1;
8211 END LOOP;
8212
8213 CLOSE ui_actions_cur;
8214 EXCEPTION
8215 WHEN OTHERS
8216 THEN
8217 v_ui_actions_date := cz_utils.epoch_begin;
8218
8219 CLOSE ui_actions_cur;
8220 END;
8221
8222 BEGIN
8223 OPEN ui_images_cur(p_ui_def_id);
8224
8225 LOOP
8226 FETCH ui_images_cur
8227 INTO v_ui_images_date;
8228
8229 EXIT WHEN ui_images_cur%NOTFOUND;
8230 EXIT WHEN ui_images_cur%ROWCOUNT = 1;
8231 END LOOP;
8232
8233 CLOSE ui_images_cur;
8234 EXCEPTION
8235 WHEN OTHERS
8236 THEN
8237 v_ui_images_date := cz_utils.epoch_begin;
8238
8239 CLOSE ui_images_cur;
8240 END;
8241
8242 BEGIN
8243 OPEN ui_page_elements(p_ui_def_id);
8244
8245 LOOP
8246 FETCH ui_page_elements
8247 INTO v_page_elements_date;
8248
8249 EXIT WHEN ui_page_elements%NOTFOUND;
8250 EXIT WHEN ui_page_elements%ROWCOUNT = 1;
8251 END LOOP;
8252
8253 CLOSE ui_page_elements;
8254 EXCEPTION
8255 WHEN OTHERS
8256 THEN
8257 v_page_elements_date := cz_utils.epoch_begin;
8258 CLOSE ui_page_elements;
8259 END;
8260 BEGIN
8261 SELECT MAX(GREATEST(v_ui_def_id_date
8262 ,v_ui_node_id_date
8263 ,v_ui_props_date
8264 ,v_ui_node_props_date
8265 ,v_ui_node_intl_date
8266 ,v_ui_pages_date
8267 ,v_ui_pages_capt_date
8268 ,v_ui_page_sets_date
8269 ,v_ui_page_refs_date
8270 ,v_ui_page_refs_date
8271 ,v_ui_pg_ref_capt_date
8272 ,v_ui_refs_date
8273 ,v_ui_templs_date
8274 ,v_ui_cont_templs_date
8275 ,v_ui_actions_date
8276 ,v_ui_images_date
8277 ,v_page_elements_date
8278 )
8279 )
8280 INTO x_max_update_date
8281 FROM DUAL;
8282 EXCEPTION
8283 WHEN OTHERS
8284 THEN
8285 x_max_update_date := cz_utils.epoch_begin;
8286 END;
8287 EXCEPTION
8288 WHEN OTHERS
8289 THEN
8290 RAISE;
8291 END get_max_ui_date;
8292
8293 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8294 -------procedure that retrieves all source models
8295 PROCEDURE get_source_models(p_model_id IN cz_model_publications.model_id%TYPE, x_models_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
8296 AS
8297 v_count PLS_INTEGER := 0;
8298 v_component_id cz_model_ref_expls.component_id%TYPE;
8299
8300 CURSOR models_cur(in_root_model NUMBER)
8301 IS
8302 SELECT DISTINCT component_id
8303 FROM cz_model_ref_expls x
8304 WHERE x.model_id = in_root_model AND x.ps_node_type IN(263, 264) AND x.deleted_flag = '0';
8305 BEGIN
8306 x_models_tbl.DELETE;
8307 v_count := 0;
8308
8309 OPEN models_cur(p_model_id);
8310
8311 LOOP
8312 FETCH models_cur
8313 INTO v_component_id;
8314
8315 EXIT WHEN models_cur%NOTFOUND;
8316 v_count := v_count + 1;
8317 x_models_tbl(v_count) := v_component_id;
8318 END LOOP;
8319
8320 CLOSE models_cur;
8321
8322 v_count := v_count + 1;
8323 x_models_tbl(v_count) := p_model_id;
8324 EXCEPTION
8325 WHEN OTHERS
8326 THEN
8327 RAISE;
8328 END get_source_models;
8329
8330 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8331 --------procedure that checks if logic has changed since the model was last published
8332 PROCEDURE chk_if_logic_changed(p_model_array IN cz_pb_mgr.t_ref, p_last_xfr_date IN DATE, x_record_count IN OUT NOCOPY NUMBER)
8333 AS
8334 v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
8335 v_expr_node_date cz_ui_nodes.last_update_date%TYPE;
8336 BEGIN
8337 IF (p_model_array.COUNT > 0)
8338 THEN
8339 FOR i IN p_model_array.FIRST .. p_model_array.LAST
8340 LOOP
8341 get_max_expr_date(p_model_array(i), v_expr_node_date);
8342
8343 IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_expr_node_date))
8344 THEN
8345 x_record_count := refresh_rules_count;
8346 EXIT;
8347 END IF;
8348
8349 BEGIN
8350 SELECT last_logic_update
8351 INTO v_last_logic_update
8352 FROM cz_devl_projects
8353 WHERE cz_devl_projects.devl_project_id = p_model_array(i) AND cz_devl_projects.deleted_flag = '0';
8354 EXCEPTION
8355 WHEN OTHERS
8356 THEN
8357 v_last_logic_update := NULL;
8358 END;
8359
8360 IF ((v_last_logic_update IS NOT NULL) AND(p_last_xfr_date < v_last_logic_update))
8361 THEN
8362 x_record_count := refresh_rules_count;
8363 EXIT;
8364 END IF;
8365 END LOOP;
8366 END IF;
8367 EXCEPTION
8368 WHEN OTHERS
8369 THEN
8370 RAISE;
8371 END chk_if_logic_changed;
8372
8373 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8374 --------procedure that checks if archives have changed since the model was last published
8375 PROCEDURE chk_if_archives_changed(p_model_array IN cz_pb_mgr.t_ref, p_last_xfr_date IN DATE, x_record_count IN OUT NOCOPY NUMBER)
8376 AS
8377 v_last_archive_update cz_archives.last_update_date%TYPE;
8378 BEGIN
8379 IF (p_model_array.COUNT > 0)
8380 THEN
8381 FOR i IN p_model_array.FIRST .. p_model_array.LAST
8382 LOOP
8383 BEGIN
8384 SELECT GREATEST(MAX(arch.last_update_date), MAX(refs.last_update_date))
8385 INTO v_last_archive_update
8386 FROM cz_archives arch, cz_archive_refs refs
8387 WHERE refs.devl_project_id = p_model_array(i) AND arch.archive_id = refs.archive_id AND arch.deleted_flag = '0'
8388 AND refs.deleted_flag = 0;
8389 EXCEPTION
8390 WHEN NO_DATA_FOUND
8391 THEN
8392 v_last_archive_update := NULL;
8393 END;
8394
8395 IF ((v_last_archive_update IS NOT NULL) AND(p_last_xfr_date < v_last_archive_update))
8396 THEN
8397 x_record_count := refresh_rules_count;
8398 EXIT;
8399 END IF;
8400 END LOOP;
8401 END IF;
8402 EXCEPTION
8403 WHEN OTHERS
8404 THEN
8405 RAISE;
8406 END chk_if_archives_changed;
8407
8408 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8409 -------procedure checks if model structure has changed since it was last published
8410 PROCEDURE chk_if_struct_changed(p_model_array IN cz_pb_mgr.t_ref, p_last_xfr_date IN DATE, x_record_count IN OUT NOCOPY NUMBER)
8411 AS
8412 v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
8413 v_last_struct_date cz_devl_projects.last_struct_update%TYPE;
8414 BEGIN
8415 IF (p_model_array.COUNT > 0)
8416 THEN
8417 FOR i IN p_model_array.FIRST .. p_model_array.LAST
8418 LOOP
8419 get_last_struct_date(p_model_array(i), v_last_struct_date);
8420
8421 IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_last_struct_date))
8422 THEN
8423 x_record_count := -777;
8424 EXIT;
8425 END IF;
8426 END LOOP;
8427 END IF;
8428 EXCEPTION
8429 WHEN OTHERS
8430 THEN
8431 RAISE;
8432 END;
8433
8434 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8435 ----get last update date for FC
8436 PROCEDURE get_fc_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
8437 AS
8438 v_update_date cz_func_comp_specs.last_update_date%TYPE;
8439 BEGIN
8440 IF (p_model_array.COUNT > 0)
8441 THEN
8442 x_max_update_date := cz_utils.epoch_begin;
8443
8444 FOR i IN p_model_array.FIRST .. p_model_array.LAST
8445 LOOP
8446 BEGIN
8447 SELECT MAX(last_update_date)
8448 INTO v_update_date
8449 FROM cz_func_comp_specs
8450 WHERE cz_func_comp_specs.devl_project_id = p_model_array(i) AND cz_func_comp_specs.deleted_flag = record_not_deleted;
8451 EXCEPTION
8452 WHEN OTHERS
8453 THEN
8454 v_update_date := NULL;
8455 END;
8456
8457 IF (v_update_date IS NOT NULL)
8458 THEN
8459 IF (v_update_date > x_max_update_date)
8460 THEN
8461 x_max_update_date := v_update_date;
8462 END IF;
8463 END IF;
8464 END LOOP;
8465 END IF;
8466 END get_fc_date;
8467
8468 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8469 ------procedure that retrieves the max last update date
8470 ------for ps nodes on the model
8471 PROCEDURE get_psnode_last_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE) AS
8472 BEGIN
8473 SELECT MAX(last_update_date)
8474 INTO x_last_update_date
8475 FROM cz_ps_nodes
8476 WHERE devl_project_id = p_model_id;
8477 EXCEPTION
8478 WHEN OTHERS THEN
8479 x_last_update_date := cz_utils.epoch_begin;
8480 END;
8481
8482 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8483 ------procedure that retrieves the max last update date
8484 ------for the description on the model
8485 PROCEDURE get_intl_text_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
8486 AS
8487 BEGIN
8488 SELECT MAX(last_update_date)
8489 INTO x_last_update_date
8490 FROM cz_localized_texts
8491 WHERE model_id = p_model_id;
8492 EXCEPTION
8493 WHEN OTHERS
8494 THEN
8495 x_last_update_date := cz_utils.epoch_begin;
8496 END;
8497
8498 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8499 PROCEDURE get_max_template_date(p_template_id IN NUMBER, x_max_date OUT NOCOPY DATE)
8500 IS
8501 BEGIN
8502 SELECT last_update_date
8503 INTO x_max_date
8504 FROM cz_ui_templates
8505 WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.deleted_flag = record_not_deleted;
8506 EXCEPTION
8507 WHEN OTHERS
8508 THEN
8509 x_max_date := cz_utils.epoch_begin;
8510 END get_max_template_date;
8511
8512 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8513 PROCEDURE get_template_date(p_global_templs_ref IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
8514 IS
8515 l_last_update_date DATE;
8516 l_prev_date DATE := cz_utils.epoch_begin;
8517 BEGIN
8518 x_max_update_date := cz_utils.epoch_begin;
8519
8520 IF (p_global_templs_ref.COUNT > 0)
8521 THEN
8522 FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
8523 LOOP
8524 SELECT last_update_date
8525 INTO l_last_update_date
8526 FROM cz_ui_templates
8527 WHERE cz_ui_templates.template_id = p_global_templs_ref(i)
8528 AND cz_ui_templates.deleted_flag = record_not_deleted
8529 AND cz_ui_templates.ui_def_id = 0;
8530
8531 IF (l_last_update_date > l_prev_date)
8532 THEN
8533 x_max_update_date := l_last_update_date;
8534 END IF;
8535
8536 l_prev_date := x_max_update_date;
8537 END LOOP;
8538 END IF;
8539 EXCEPTION
8540 WHEN NO_DATA_FOUND
8541 THEN
8542 x_max_update_date := cz_utils.epoch_begin;
8543 END get_template_date;
8544
8545 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8546 PROCEDURE get_last_templ_activity(p_global_templs_ref IN cz_pb_mgr.t_ref, p_server_id IN NUMBER, x_last_xfr_activity OUT NOCOPY DATE)
8547 IS
8548 l_last_update_date DATE;
8549 l_prev_date DATE := cz_utils.epoch_begin;
8550 rec_count NUMBER := 0;
8551 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
8552 BEGIN
8553 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
8554 THEN
8555 l_pub_mode := cz_model_migration_pvt.mode_migration;
8556 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
8557 THEN
8558 l_pub_mode := cz_model_migration_pvt.mode_copy;
8559 END IF;
8560
8561 x_last_xfr_activity := cz_utils.epoch_begin;
8562
8563 IF (p_global_templs_ref.COUNT > 0)
8564 THEN
8565 FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
8566 LOOP
8567 BEGIN
8568 SELECT MAX(published)
8569 INTO l_last_update_date
8570 FROM cz_model_publications
8571 WHERE cz_model_publications.object_id = p_global_templs_ref(i)
8572 AND cz_model_publications.deleted_flag = record_not_deleted
8573 AND cz_model_publications.object_type = template_publication
8574 AND UPPER(cz_model_publications.publication_mode) = l_pub_mode;
8575 --SPUPPALA bug#7116052 7-AUG-2009
8576 EXCEPTION
8577 WHEN NO_DATA_FOUND
8578 THEN
8579 NULL;
8580 END;
8581
8582 IF (l_last_update_date >= l_prev_date)
8583 THEN
8584 x_last_xfr_activity := l_last_update_date;
8585 END IF;
8586 END LOOP;
8587 END IF;
8588 EXCEPTION
8589 WHEN OTHERS
8590 THEN
8591 x_last_xfr_activity := cz_utils.epoch_begin;
8592 END get_last_templ_activity;
8593
8594 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8595 PROCEDURE get_effectivity_set_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
8596 IS
8597 BEGIN
8598 SELECT MAX(last_update_date)
8599 INTO x_last_update_date
8600 FROM cz_effectivity_sets
8601 WHERE cz_effectivity_sets.effectivity_set_id IN(
8602 SELECT DISTINCT effectivity_set_id
8603 FROM cz_ps_nodes
8604 WHERE cz_ps_nodes.devl_project_id = p_model_id
8605 AND cz_ps_nodes.deleted_flag = record_not_deleted
8606 AND cz_ps_nodes.effectivity_set_id IS NOT NULL);
8607 EXCEPTION
8608 WHEN NO_DATA_FOUND
8609 THEN
8610 x_last_update_date := cz_utils.epoch_begin;
8611 END get_effectivity_set_date;
8612
8613 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8614 ------get last update date for effectivity
8615 PROCEDURE get_eff_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
8616 AS
8617 v_update_date cz_effectivity_sets.last_update_date%TYPE;
8618 BEGIN
8619 IF (p_model_array.COUNT > 0)
8620 THEN
8621 x_max_update_date := cz_utils.epoch_begin;
8622
8623 FOR i IN p_model_array.FIRST .. p_model_array.LAST
8624 LOOP
8625 get_effectivity_set_date(p_model_array(i), v_update_date);
8626
8627 IF (v_update_date > x_max_update_date)
8628 THEN
8629 x_max_update_date := v_update_date;
8630 END IF;
8631 END LOOP;
8632 END IF;
8633 END get_eff_date;
8634
8635 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8636 PROCEDURE collect_global_actions(p_elem_id_tbl IN OUT NOCOPY cz_pb_mgr.t_ref, p_elem_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref)
8637 IS
8638 l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
8639 l_ui_actns_ui_act_new_id_tbl cz_pb_mgr.t_ref;
8640 l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
8641 l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
8642 l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
8643 l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
8644 l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
8645 l_prcpg_templ_tbl cz_pb_mgr.t_ref;
8646 l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
8647 l_prc_caption_tbl cz_pb_mgr.t_ref;
8648 l_pg_title_tbl cz_pb_mgr.t_ref;
8649 l_main_msg_tbl cz_pb_mgr.t_ref;
8650 l_text_tbl t_ref;
8651 l_text_count PLS_INTEGER := 0;
8652 rec_count NUMBER;
8653 BEGIN
8654 IF (p_elem_id_tbl.COUNT > 0) THEN
8655 rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
8656
8657 FOR i IN p_elem_id_tbl.FIRST .. p_elem_id_tbl.LAST
8658 LOOP
8659 l_ui_actns_ui_act_id_tbl.DELETE;
8660 l_ui_actns_ui_uidef_tbl.DELETE;
8661 l_ui_actns_ui_tgtui_tbl.DELETE;
8662 l_ui_actns_tgtexpl_tbl.DELETE;
8663 l_ui_actns_ctx_comp_tbl.DELETE;
8664 l_ui_actns_ren_cond_tbl.DELETE;
8665 l_prcpg_templ_tbl.DELETE;
8666 l_prcpg_tmpui_tbl.DELETE;
8667 l_prc_caption_tbl.DELETE;
8668 l_pg_title_tbl.DELETE;
8669 l_main_msg_tbl.DELETE;
8670
8671 IF (p_elem_type_ref(i) = 552) THEN
8672 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_actions_seq
8673 , 'cz_ui_actions_s.nextval' || cz_pb_mgr.v_db_link
8674 ,cz_pb_mgr.v_oraclesequenceincr
8675 )
8676 ,ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
8677 ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
8678 ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
8679 BULK COLLECT INTO l_ui_actns_ui_act_new_id_tbl
8680 ,l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
8681 ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
8682 ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
8683 FROM cz_ui_actions
8684 WHERE cz_ui_actions.ui_action_id = p_elem_id_tbl(i)
8685 AND cz_ui_actions.ui_def_id = 0
8686 AND cz_ui_actions.deleted_flag = record_not_deleted
8687 AND cz_ui_actions.seeded_flag <> seed_data;
8688 END IF;
8689
8690 IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
8691 FOR j IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
8692 LOOP
8693 rec_count := rec_count + 1;
8694
8695 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0) THEN
8696 cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_new_id_tbl(j);
8697 cz_pb_mgr.g_ui_actions_id_idx_ref(l_ui_actns_ui_act_id_tbl(j)):=l_ui_actns_ui_act_new_id_tbl(j);
8698 ELSE
8699 cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
8700 END IF;
8701
8702 cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
8703 cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(j);
8704 cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(j);
8705 cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(j);
8706 cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(j);
8707 cz_pb_mgr.g_ui_actns_ren_cond_tbl(rec_count) := l_ui_actns_ren_cond_tbl(j); -- this col not used, otherwise we would have an issue
8708 cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(j);
8709 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(j);
8710 cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(j);
8711 cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(j);
8712 cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(j);
8713
8714 -- no template element records for page title text, main msg, prc caption text
8715 -- so we need to collect them here
8716 IF l_prc_caption_tbl(j) IS NOT NULL THEN
8717 l_text_count := l_text_count + 1;
8718 l_text_tbl(l_text_count) := l_prc_caption_tbl(j);
8719 END IF;
8720 IF l_pg_title_tbl(j) IS NOT NULL THEN
8721 l_text_count := l_text_count + 1;
8722 l_text_tbl(l_text_count) := l_pg_title_tbl(j);
8723 END IF;
8724 IF l_main_msg_tbl(j) IS NOT NULL THEN
8725 l_text_count := l_text_count + 1;
8726 l_text_tbl(l_text_count) := l_main_msg_tbl(j);
8727 END IF;
8728 END LOOP;
8729
8730 IF l_text_count > 0 THEN
8731 insert_intl_texts(l_text_tbl, 'global texts from ui actions', TRUE);
8732 END IF;
8733
8734 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
8735
8736 --The resolution moved here from insert_template_elements.
8737 BEGIN
8738 p_elem_id_tbl(i) := cz_pb_mgr.g_ui_actions_id_idx_ref(p_elem_id_tbl(i));
8739 EXCEPTION
8740 WHEN OTHERS THEN
8741 cz_pb_mgr.v_err_message := 'Error during resolution of ui_action id = ' || p_elem_id_tbl(i) || ': ' || SQLERRM;
8742 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8743 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8744 RAISE;
8745 END;
8746 END IF;
8747 END IF;
8748 END LOOP;
8749 END IF;
8750 EXCEPTION
8751 WHEN NO_DATA_FOUND THEN
8752 NULL;
8753 WHEN OTHERS THEN
8754 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
8755 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8756 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8757 RAISE;
8758 END collect_global_actions;
8759 --------------------------------
8760 PROCEDURE collect_global_texts(
8761 p_template_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8762 ,p_element_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8763 ,x_status_code IN OUT NOCOPY VARCHAR2
8764 )
8765 IS
8766 l_elem_text_tbl cz_pb_mgr.t_ref;
8767 rec_count NUMBER := 0;
8768 BEGIN
8769 IF (p_template_id_ref.COUNT > 0)
8770 THEN
8771 FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8772 LOOP
8773 IF (p_element_type_ref(i) = 8)
8774 THEN
8775 rec_count := l_elem_text_tbl.COUNT + 1;
8776 l_elem_text_tbl(rec_count) := p_template_id_ref(i);
8777 END IF;
8778 END LOOP;
8779
8780 insert_intl_texts(l_elem_text_tbl, 'global texts', TRUE);
8781
8782 FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8783 LOOP
8784 IF (p_element_type_ref(i) = 8)
8785 THEN
8786 p_template_id_ref(i) := cz_pb_mgr.v_cz_intl_text_idx_ref(p_template_id_ref(i));
8787 END IF;
8788 END LOOP;
8789 END IF;
8790 EXCEPTION
8791 WHEN OTHERS
8792 THEN
8793 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_COLLECT_GL_TEXTS', 'SQLERRM', SQLERRM);
8794 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_GLTEXTS', SQLCODE);
8795 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8796 RAISE;
8797 END collect_global_texts;
8798
8799 ---------------------------------------------------------------
8800 PROCEDURE collect_global_rules(
8801 p_rule_id_array IN OUT NOCOPY cz_pb_mgr.t_ref
8802 ,p_rule_type_array IN OUT NOCOPY cz_pb_mgr.t_ref
8803 ,x_status IN OUT NOCOPY VARCHAR2
8804 )
8805 AS
8806 l_new_rule_id NUMBER;
8807 l_old_rule_id NUMBER;
8808 v_cz_rules_rf_id NUMBER;
8809 v_cz_rules_proj_id NUMBER;
8810 v_cz_rules_comp_id NUMBER;
8811 v_cz_rules_rea_id NUMBER;
8812 v_cz_rules_eff_id NUMBER;
8813 v_cz_rules_unmsg_id NUMBER;
8814 v_cz_rules_expl_id NUMBER;
8815 v_cz_rules_sig NUMBER;
8816 v_cz_rules_ui NUMBER;
8817 v_cz_eff_usage_mask cz_rules.effective_usage_mask%TYPE;
8818
8819 rec_count NUMBER;
8820 BEGIN
8821 IF (x_status = PUBLICATION_ERROR OR p_rule_id_array.COUNT = 0) THEN
8822 RETURN;
8823 END IF;
8824
8825 rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT;
8826
8827 FOR i IN p_rule_id_array.FIRST .. p_rule_id_array.LAST
8828 LOOP
8829 IF (p_rule_type_array(i) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)) THEN
8830 BEGIN
8831 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
8832 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link
8833 ,cz_pb_mgr.v_oraclesequenceincr
8834 )
8835 ,rule_id, rule_folder_id, devl_project_id, component_id
8836 ,reason_id, unsatisfied_msg_id, effectivity_set_id
8837 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
8838 INTO l_new_rule_id
8839 ,l_old_rule_id, v_cz_rules_rf_id, v_cz_rules_proj_id, v_cz_rules_comp_id
8840 ,v_cz_rules_rea_id, v_cz_rules_unmsg_id, v_cz_rules_eff_id
8841 ,v_cz_rules_expl_id, v_cz_rules_sig, v_cz_rules_ui, v_cz_eff_usage_mask
8842 FROM cz_rules
8843 WHERE rule_id = p_rule_id_array(i) AND deleted_flag = '0' AND seeded_flag = '0';
8844
8845 rec_count := rec_count + 1;
8846 cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_rule_id):=l_new_rule_id;
8847 cz_pb_mgr.v_cz_rules_rule_id_new_ref(rec_count) := l_new_rule_id;
8848 cz_pb_mgr.v_cz_rules_rule_id_old_ref(rec_count) := l_old_rule_id;
8849 cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := v_cz_rules_proj_id;
8850 cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := v_cz_rules_comp_id;
8851 cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
8852 cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := v_cz_rules_expl_id;
8853 cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := v_cz_rules_rea_id;
8854 cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := v_cz_rules_unmsg_id;
8855 cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := v_cz_rules_eff_id;
8856 cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := v_cz_rules_sig;
8857 cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
8858 cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := v_cz_rules_ui;
8859 cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_cz_eff_usage_mask;
8860 cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_new_rule_id;
8861
8862 EXCEPTION
8863 WHEN NO_DATA_FOUND THEN
8864 cz_pb_mgr.v_err_message := 'No rules found: ' || p_rule_id_array(i);
8865 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
8866 END;
8867
8868 BEGIN
8869 p_rule_id_array(i) := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(p_rule_id_array(i));
8870 EXCEPTION
8871 WHEN OTHERS THEN
8872 NULL;
8873 END;
8874 END IF;
8875 END LOOP;
8876 EXCEPTION
8877 WHEN OTHERS THEN
8878 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
8879 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
8880 x_status := PUBLICATION_ERROR;
8881 RAISE;
8882 END collect_global_rules;
8883
8884 ------------------------------------------------
8885 PROCEDURE collect_template_elements(p_template_ref IN cz_pb_mgr.t_ref)
8886 IS
8887 l_template_id_tbl cz_pb_mgr.t_ref;
8888 l_ui_def_id_tbl cz_pb_mgr.t_ref;
8889 l_element_type_tbl cz_pb_mgr.t_ref;
8890 l_element_id_tbl cz_pb_mgr.t_ref;
8891 l_pers_elem_tbl cz_pb_mgr.t_ref;
8892 l_src_pb_id NUMBER;
8893 l_tgt_pb_id NUMBER;
8894 rec_count NUMBER := 0;
8895 BEGIN
8896 l_template_id_ref.DELETE;
8897 l_ui_def_id_ref.DELETE;
8898 l_element_type_ref.DELETE;
8899 l_element_id_ref.DELETE;
8900 l_pers_elem_ref.DELETE;
8901 cz_pb_mgr.l_template_id_ref.DELETE;
8902 cz_pb_mgr.l_ui_def_id_ref.DELETE;
8903 cz_pb_mgr.l_element_type_ref.DELETE;
8904 cz_pb_mgr.l_element_id_ref.DELETE;
8905 cz_pb_mgr.l_pers_elem_ref.DELETE;
8906 cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
8907 cz_pb_mgr.g_ui_actns_ui_uidef_ref.DELETE;
8908 cz_pb_mgr.g_ui_actns_ui_tgtui_ref.DELETE;
8909 cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
8910 cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
8911 cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
8912 cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
8913 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
8914 cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
8915 cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
8916 cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
8917
8918 IF (p_template_ref.COUNT > 0)
8919 THEN
8920 FOR i IN p_template_ref.FIRST .. p_template_ref.LAST
8921 LOOP
8922 l_template_id_tbl.DELETE;
8923 l_ui_def_id_tbl.DELETE;
8924 l_element_type_tbl.DELETE;
8925 l_element_id_tbl.DELETE;
8926 l_pers_elem_tbl.DELETE;
8927
8928 SELECT template_id, ui_def_id, element_type, element_id, persistent_element_id
8929 BULK COLLECT INTO l_template_id_tbl, l_ui_def_id_tbl, l_element_type_tbl, l_element_id_tbl, l_pers_elem_tbl
8930 FROM cz_ui_template_elements
8931 WHERE cz_ui_template_elements.template_id = p_template_ref(i)
8932 AND cz_ui_template_elements.ui_def_id = 0
8933 AND cz_ui_template_elements.deleted_flag = '0'
8934 AND cz_ui_template_elements.seeded_flag <> seed_data;
8935
8936 IF (l_template_id_tbl.COUNT > 0)
8937 THEN
8938 rec_count := cz_pb_mgr.l_template_id_ref.COUNT;
8939
8940 FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
8941 LOOP
8942 rec_count := rec_count + 1;
8943 cz_pb_mgr.l_template_id_ref(rec_count) := l_template_id_tbl(j);
8944 cz_pb_mgr.l_ui_def_id_ref(rec_count) := l_ui_def_id_tbl(j);
8945 cz_pb_mgr.l_element_type_ref(rec_count) := l_element_type_tbl(j);
8946 cz_pb_mgr.l_element_id_ref(rec_count) := l_element_id_tbl(j);
8947 cz_pb_mgr.l_pers_elem_ref(rec_count) := l_pers_elem_tbl(j);
8948 END LOOP;
8949 END IF;
8950 END LOOP;
8951
8952 IF (l_template_id_ref.COUNT > 0)
8953 THEN
8954 collect_global_actions(cz_pb_mgr.l_element_id_ref, l_element_type_ref);
8955 collect_global_rules(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8956 collect_global_texts(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8957 resolve_ids(cz_pb_mgr.l_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'template ids of template elements');
8958 END IF;
8959 END IF;
8960 EXCEPTION
8961 WHEN NO_DATA_FOUND
8962 THEN
8963 NULL;
8964 WHEN OTHERS
8965 THEN
8966 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_template_elements', 'SQLERRM', SQLERRM);
8967 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_TMPLELEM', SQLCODE);
8968 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8969 RAISE;
8970 END collect_template_elements;
8971
8972 --------------------------------------------------------------------------------
8973 FUNCTION get_target_template(p_src_template_id IN NUMBER) RETURN NUMBER
8974 IS
8975 l_template_id NUMBER := -1;
8976 l_ref_cursor ref_cursor;
8977 BEGIN
8978 -- using binding vars
8979 -- check existing in ui template table (esp for mig)?
8980 OPEN l_ref_cursor FOR 'SELECT object_id'
8981 || ' FROM cz_model_publications'
8982 || cz_pb_mgr.v_db_link
8983 || ' t'
8984 || ' WHERE t.source_model_id = '
8985 || p_src_template_id
8986 || ' AND t.object_type = ''UIT'' AND t.deleted_flag=0'
8987 || ' AND t.source_target_flag = '''
8988 || g_target_flag
8989 || '''';
8990
8991 LOOP
8992 FETCH l_ref_cursor INTO l_template_id;
8993 EXIT WHEN l_ref_cursor%NOTFOUND;
8994 END LOOP;
8995
8996 CLOSE l_ref_cursor;
8997
8998 RETURN l_template_id;
8999 END get_target_template;
9000
9001 --returns the template at target server if it ever got published
9002 --(populates cz_pb_mgr.g_ui_templates_new_temp_id_ref)
9003 -- or generates a new id for the target.
9004
9005 FUNCTION get_new_template(p_template_id IN NUMBER)
9006 RETURN NUMBER
9007 IS
9008 l_template_id NUMBER;
9009 BEGIN
9010 l_template_id := get_target_template(p_template_id);
9011 IF (l_template_id = -1) THEN
9012 l_template_id :=
9013 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates_seq,
9014 'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr);
9015 END IF;
9016
9017 RETURN l_template_id;
9018 EXCEPTION
9019 WHEN OTHERS THEN
9020 RAISE;
9021 END get_new_template;
9022
9023 --------------------------------------------------------------------------
9024 -- returns 0 when a template is either never published
9025 -- or is modified after last publication else returns 1.
9026 PROCEDURE has_uit_changed(p_template_id IN NUMBER, p_server_id IN NUMBER, x_status IN OUT NOCOPY NUMBER)
9027 IS
9028 l_uit_update_date DATE;
9029 l_last_update_date DATE;
9030 l_template_id NUMBER;
9031 BEGIN
9032 x_status := 0;
9033
9034 SELECT last_update_date
9035 INTO l_last_update_date
9036 FROM cz_model_publications
9037 WHERE cz_model_publications.object_id = p_template_id
9038 AND cz_model_publications.object_type = 'UIT'
9039 AND cz_model_publications.source_target_flag = g_source_flag
9040 AND cz_model_publications.server_id = p_server_id
9041 AND cz_model_publications.export_status IN('OK', 'PUP')
9042 AND cz_model_publications.deleted_flag = '0';
9043
9044 SELECT last_update_date
9045 INTO l_uit_update_date
9046 FROM cz_ui_templates
9047 WHERE ui_def_id = 0 AND template_id = p_template_id AND deleted_flag = '0';
9048
9049 -- if template changed since last publication
9050 IF (l_uit_update_date > l_last_update_date) THEN
9051 x_status := 0;
9052 ELSE
9053 -- get the target tempalte id for the last publication and
9054 -- add it to the index, such that its not processed further.
9055 l_template_id := get_target_template(p_template_id);
9056 IF l_template_id = -1 THEN
9057 x_status := 0;
9058 ELSE
9059 cz_pb_mgr.g_ui_templates_idx_temp_ref(p_template_id):=l_template_id;
9060 x_status := 1;
9061 END IF;
9062 END IF;
9063 -- if template never got published
9064 EXCEPTION
9065 WHEN NO_DATA_FOUND THEN
9066 x_status := 0;
9067 END has_uit_changed;
9068 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9069 PROCEDURE get_oa_tmpls
9070 IS
9071 l_new_tmpl_tbl cz_pb_mgr.t_ref; -- new or changed templs
9072 l_old_tmpl_tbl cz_pb_mgr.t_ref; -- exported already, no change
9073 l_all_tmpl_tbl cz_pb_mgr.t_ref; -- All the templates in all the UI's
9074 l_all_tmpl_map cz_pb_mgr.t_ref_idx_vc2;
9075 l_temp_tbl cz_pb_mgr.t_ref;
9076 l_rec_count PLS_INTEGER;
9077 l_template_id NUMBER;
9078 l_jrad_doc VARCHAR2(255); -- cz_ui_templates.jrad_doc%TYPE;
9079
9080 -- used for synch operation and insert operation resp
9081 l_parent_container_type NUMBER;
9082 l_root_element_signature_id NUMBER;
9083 l_template_name VARCHAR2(255); -- cz_ui_templates.TEMPLATE_NAME%TYPE;
9084 l_root_region_type VARCHAR2(255); -- cz_ui_templates.ROOT_REGION_TYPE%TYPE;
9085
9086 remote_uct ref_cursor;
9087
9088 document_synch EXCEPTION;
9089
9090 -- check if templates published previously or if changed since publication
9091 -- add to the new tbl if never published or exported before but changed after publication
9092 -- put to the old tbl, and put src:tgt ids into g_ui_templates_idx_temp_ref map otherwise
9093 -- may be better to separate the new ones with the changed and then just use the
9094 -- new ones for insert proc while the changed for updating?
9095 PROCEDURE check_template_status(p_tmpl_tbl IN t_ref)
9096 IS
9097 l_status INTEGER;
9098 l_old_count PLS_INTEGER;
9099 l_new_count PLS_INTEGER;
9100 l_all_count PLS_INTEGER;
9101 BEGIN
9102 IF p_tmpl_tbl.COUNT > 0 THEN
9103 l_old_count := l_old_tmpl_tbl.COUNT;
9104 l_new_count := l_new_tmpl_tbl.COUNT;
9105 l_all_count := l_all_tmpl_tbl.COUNT;
9106 FOR i IN p_tmpl_tbl.FIRST .. p_tmpl_tbl.LAST LOOP
9107 IF NOT l_all_tmpl_map.EXISTS(p_tmpl_tbl(i)) THEN
9108 l_status := 0;
9109 l_all_count := l_all_count + 1;
9110 l_all_tmpl_tbl(l_all_count) := p_tmpl_tbl(i);
9111 has_uit_changed(p_tmpl_tbl(i), cz_pb_mgr.v_server_id, l_status);
9112 IF l_status = 0 THEN -- not pub'd or chg'd since pub
9113 l_new_count := l_new_count + 1;
9114 l_new_tmpl_tbl(l_new_count) := p_tmpl_tbl(i);
9115 ELSE
9116 l_old_count := l_old_count + 1;
9117 l_old_tmpl_tbl(l_old_count) := p_tmpl_tbl(i);
9118 END IF;
9119
9120 l_all_tmpl_map(p_tmpl_tbl(i)) := NULL;
9121 END IF;
9122 END LOOP;
9123 END IF;
9124 END check_template_status;
9125
9126 BEGIN
9127 --For model migration, the rules related tables will be loaded in bulk_collect_rules
9128 --and they should not be cleared here. Rules related tables are collected in 'collect_global_rules',
9129 --which is called from here.
9130 --For publishing, this code gets executed right in the beginning(when all the tables are empty
9131 --anyway), and seems redundant. But for the risk of introducing regressions, we
9132 --will execute this only for publishing.
9133 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
9134 clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
9135 END IF;
9136
9137 cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
9138 cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
9139 cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
9140 cz_pb_mgr.g_ui_templates_ui_def_old_ref.DELETE;
9141 cz_pb_mgr.g_ui_templates_ui_def_new_ref.DELETE;
9142 cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
9143 cz_pb_mgr.g_ui_templates_title_ref.DELETE;
9144 cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
9145 cz_pb_mgr.g_ui_templates_jrad_old_ref.DELETE;
9146 cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
9147 cz_pb_mgr.g_ui_templates_but_uidef_id.DELETE;
9148
9149 -- templates already exported and no change since, used only in replacing extends
9150 cz_pb_mgr.g_tmpl_jrad_old_tbl.DELETE;
9151 cz_pb_mgr.g_tmpl_jrad_new_tbl.DELETE;
9152
9153 cz_pb_mgr.g_ui_templates_obj_type.DELETE;
9154 cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
9155
9156 -- templs directly referred by the UIs: not published before or changed since publication
9157 IF cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 AND cz_pb_mgr.v_session_parameter <> model_copy THEN
9158 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST LOOP
9159 l_temp_tbl.DELETE;
9160 SELECT template_id BULK COLLECT INTO l_temp_tbl
9161 FROM cz_ui_collect_tmpls_v
9162 WHERE cz_ui_collect_tmpls_v.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
9163 AND cz_ui_collect_tmpls_v.template_id IN
9164 (SELECT template_id
9165 FROM cz_ui_templates
9166 WHERE cz_ui_templates.deleted_flag = '0' AND cz_ui_templates.seeded_flag = '0'
9167 AND cz_ui_templates.ui_def_id = 0);
9168
9169 check_template_status(l_temp_tbl);
9170 END LOOP;
9171 END IF;
9172
9173 -- append changed or not published ref templs to l_new_tmpl_tbl
9174 -- vsingava 10th May '10, bug7243309
9175 -- The template changed might be referred from a non-changed and already published
9176 -- template. Account for that.
9177 l_rec_count := l_all_tmpl_tbl.COUNT;
9178 IF l_rec_count > 0 THEN
9179 FOR i IN 1 .. l_rec_count LOOP
9180 l_temp_tbl.DELETE;
9181 SELECT ref_template_id BULK COLLECT INTO l_temp_tbl
9182 FROM cz_ui_ref_templates
9183 WHERE cz_ui_ref_templates.deleted_flag = '0'
9184 AND cz_ui_ref_templates.seeded_flag = '0'
9185 AND cz_ui_ref_templates.ref_template_ui_def_id = '0'
9186 AND cz_ui_ref_templates.ref_template_id IN
9187 (SELECT template_id
9188 FROM cz_ui_templates t
9189 WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0)
9190 START WITH cz_ui_ref_templates.template_id = l_all_tmpl_tbl(i) AND cz_ui_ref_templates.template_ui_def_id = '0'
9191 CONNECT BY PRIOR ref_template_id = cz_ui_ref_templates.template_id
9192 AND PRIOR ref_template_ui_def_id = cz_ui_ref_templates.template_ui_def_id
9193 AND PRIOR cz_ui_ref_templates.deleted_flag = '0';
9194
9195 check_template_status(l_temp_tbl);
9196 END LOOP;
9197 END IF;
9198
9199 -- add button bar templs (bbt) referred by the templates to the array
9200 -- assume bbts have no ref tmpl, otherwise we have an issue here
9201 l_rec_count := l_new_tmpl_tbl.COUNT;
9202 IF l_rec_count > 0 THEN
9203 FOR i IN 1 .. l_rec_count LOOP
9204 l_temp_tbl.DELETE;
9205 SELECT button_bar_template_id BULK COLLECT INTO l_temp_tbl
9206 FROM cz_ui_templates
9207 WHERE cz_ui_templates.deleted_flag = '0'
9208 AND cz_ui_templates.seeded_flag = '0'
9209 AND cz_ui_templates.ui_def_id = 0
9210 AND cz_ui_templates.button_bar_template_id IS NOT NULL
9211 AND cz_ui_templates.template_id = l_new_tmpl_tbl(i)
9212 AND cz_ui_templates.button_bar_template_id IN
9213 (SELECT template_id
9214 FROM cz_ui_templates t
9215 WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0);
9216
9217 check_template_status(l_temp_tbl);
9218 END LOOP;
9219 END IF;
9220
9221 -- processing page tmpls (ppt) referred by ui actions
9222 -- assume ppts have no ref tmpl, no further ppt ref from the action elements (if any) of the ppts
9223 l_rec_count := l_new_tmpl_tbl.COUNT;
9224 IF l_rec_count > 0 THEN
9225 FOR i IN 1 .. l_rec_count LOOP
9226 l_temp_tbl.DELETE;
9227 SELECT processing_page_templ_id BULK COLLECT INTO l_temp_tbl
9228 FROM cz_ui_actions act
9229 WHERE deleted_flag = '0' AND ui_def_id = 0 AND ui_action_id IN
9230 (SELECT element_id FROM cz_ui_template_elements
9231 WHERE deleted_flag = '0' AND element_type = 552
9232 AND template_id = l_new_tmpl_tbl(i)
9233 AND ui_def_id = 0 and seeded_flag = '0')
9234 AND EXISTS (SELECT NULL FROM cz_ui_templates
9235 WHERE deleted_flag = '0' AND ui_def_id = 0
9236 AND template_id = act.processing_page_templ_id AND seeded_flag = '0');
9237
9238 check_template_status(l_temp_tbl);
9239 END LOOP;
9240 END IF;
9241
9242 IF (l_new_tmpl_tbl.COUNT > 0) THEN
9243 l_rec_count := 0;
9244
9245 FOR i IN l_new_tmpl_tbl.FIRST .. l_new_tmpl_tbl.LAST LOOP
9246 FOR j IN (SELECT * FROM cz_ui_templates
9247 WHERE template_id = l_new_tmpl_tbl(i) AND ui_def_id = '0' AND deleted_flag = '0') LOOP
9248 IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model THEN
9249 -- The synch check will be performed here
9250 -- The template name will be checked over the link
9251 -- If the the template does not exists, then we will be using the new template that is created
9252 l_template_name := NULL;
9253 l_template_id := NULL;
9254 l_parent_container_type := NULL;
9255 l_root_region_type := NULL;
9256 l_root_element_signature_id := NULL;
9257
9258 OPEN remote_uct FOR 'Select template_name,template_id,parent_container_type,root_region_type,'
9259 || 'root_element_signature_id from cz_ui_templates'
9260 || cz_pb_mgr.v_db_link || 't '
9261 || 'where t.ui_def_id = ''0'' and t.template_usage = ''0'' and '
9262 || 't.deleted_flag = ''0'' and t.seeded_flag = ''0'' and '
9263 || 't.template_name = :1 and t.template_type = :2 and nvl(t.message_type,-1) = nvl(:3,-1)'
9264 USING j.template_name, j.template_type, j.message_type;
9265 FETCH remote_uct
9266 INTO l_template_name, l_template_id, l_parent_container_type,
9267 l_root_region_type, l_root_element_signature_id;
9268
9269 IF l_template_name IS NOT NULL AND
9270 ( l_parent_container_type <> j.parent_container_type
9271 OR l_root_region_type <> j.root_region_type
9272 OR l_root_element_signature_id <> j.root_element_signature_id ) THEN
9273 cz_pb_mgr.v_err_message := cz_utils.get_text('UCT synch error', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
9274 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
9275 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9276 RAISE document_synch;
9277 END IF;
9278 END IF;
9279
9280 -- pub: populate all the new or changed templs to the arrays
9281 -- mig: only add the new templs (l_template_name IS NULL) ??
9282 IF cz_pb_mgr.v_session_parameter = pub_model OR l_template_name IS NULL THEN
9283 l_rec_count := l_rec_count + 1;
9284 l_template_id := get_new_template(j.template_id);
9285 cz_pb_mgr.g_ui_templates_new_temp_id_ref(l_rec_count) := l_template_id;
9286 cz_pb_mgr.g_ui_templates_old_temp_id_ref(l_rec_count) := j.template_id;
9287 cz_pb_mgr.g_ui_templates_ui_def_old_ref(l_rec_count) := j.ui_def_id; -- '0'
9288 cz_pb_mgr.g_ui_templates_ui_def_new_ref(l_rec_count) := j.ui_def_id;
9289 cz_pb_mgr.g_ui_templates_msg_id_ref(l_rec_count) := j.main_message_id;
9290 cz_pb_mgr.g_ui_templates_title_ref(l_rec_count) := j.title_id;
9291 cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
9292 cz_pb_mgr.g_ui_templates_button_tbl(l_rec_count) := j.button_bar_template_id;
9293 cz_pb_mgr.g_ui_templates_but_uidef_id(l_rec_count) := j.button_bar_templ_uidef_id;
9294
9295 IF cz_pb_mgr.v_session_parameter = pub_model THEN
9296 cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := j.jrad_doc || '_p';
9297 ELSE
9298 cz_pb_mgr.g_ui_templates_obj_type(l_rec_count) := 'UCT';
9299 cz_pb_mgr.g_enclosing_fld_rp_entry(l_rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
9300 cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := REPLACE(j.jrad_doc,TO_CHAR(j.template_id),TO_CHAR(l_template_id));
9301 END IF;
9302 END IF;
9303
9304 -- fix for bug 7047145
9305 -- even if UI CT is already exists on target instance we need to replace
9306 -- old template_ids to new ones in XML attribute "extends"
9307 -- To do that g_ui_templates_jrad_old_ref/g_ui_templates_jrad_new_ref must be populated
9308 -- these two arrays are used in replace_extends()
9309 -- This part shoul be executed in the loop for already published/migrated templates
9310 -- but current code has a mny problems in this area ( checking for ui templates
9311 -- which need to be published/migrated
9312 IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND l_template_name IS NOT NULL THEN
9313 l_rec_count := l_rec_count + 1;
9314 cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
9315 cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := REPLACE(j.jrad_doc,TO_CHAR(j.template_id),TO_CHAR(l_template_id));
9316 END IF;
9317
9318 cz_pb_mgr.g_ui_templates_idx_temp_ref(j.template_id):=l_template_id;
9319 END LOOP;
9320 END LOOP;
9321
9322 collect_template_elements(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
9323 END IF;
9324
9325 -- get jard_doc for the tmpls published before and not changed since for replacing extends
9326 IF l_old_tmpl_tbl.COUNT > 0 THEN
9327 l_rec_count := 0;
9328 FOR i IN l_old_tmpl_tbl.FIRST..l_old_tmpl_tbl.LAST LOOP
9329 SELECT jrad_doc INTO l_jrad_doc
9330 FROM cz_ui_templates
9331 WHERE template_id = l_old_tmpl_tbl(i) AND ui_def_id = 0 AND deleted_flag = '0';
9332
9333 l_rec_count := l_rec_count + 1;
9334 CZ_PB_MGR.g_tmpl_jrad_old_tbl(l_rec_count) := l_jrad_doc;
9335 IF cz_pb_mgr.v_session_parameter = pub_model THEN
9336 cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) := l_jrad_doc || '_p';
9337 ELSE
9338 cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) :=
9339 REPLACE(l_jrad_doc, TO_CHAR(l_old_tmpl_tbl(i)),
9340 TO_CHAR(cz_pb_mgr.g_ui_templates_idx_temp_ref(l_old_tmpl_tbl(i))));
9341 END IF;
9342 END LOOP;
9343 END IF;
9344
9345 --LA 9782717
9346 -- Fix based on 7250891 where need to collect jrad docs for the other templates in the chain
9347 -- which are in l_new_tmpl_tbl
9348 IF l_new_tmpl_tbl.COUNT > 0 THEN
9349 FOR i IN l_new_tmpl_tbl.FIRST..l_new_tmpl_tbl.LAST LOOP
9350 SELECT jrad_doc INTO l_jrad_doc
9351 FROM cz_ui_templates
9352 WHERE template_id = l_new_tmpl_tbl(i) AND ui_def_id = 0 AND deleted_flag = '0';
9353
9354 l_rec_count := l_rec_count + 1;
9355 cz_pb_mgr.g_tmpl_jrad_old_tbl(l_rec_count) := l_jrad_doc;
9356 IF cz_pb_mgr.v_session_parameter = pub_model THEN
9357 cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) := l_jrad_doc || '_p';
9358 ELSE
9359 cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) :=
9360 REPLACE(l_jrad_doc, TO_CHAR(l_new_tmpl_tbl(i)),
9361 TO_CHAR(cz_pb_mgr.g_ui_templates_idx_temp_ref(l_new_tmpl_tbl(i))));
9362 END IF;
9363 END LOOP;
9364 END IF;
9365
9366 EXCEPTION
9367 WHEN OTHERS THEN
9368 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
9369 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
9370 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9371 RAISE;
9372 END get_oa_tmpls;
9373
9374 ---------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9375 ------------procedure checks if the model has been changed since it was last published
9376 FUNCTION has_tobe_published(publicationid IN NUMBER)
9377 RETURN BOOLEAN
9378 IS
9379 v_last_struct_update cz_devl_projects.last_struct_update%TYPE;
9380 v_models_tbl cz_pb_mgr.t_ref;
9381 record_count PLS_INTEGER := 0;
9382 v_last_update_date cz_ui_defs.last_update_date%TYPE;
9383 v_fc_update_date cz_func_comp_specs.last_update_date%TYPE;
9384 v_eff_update_date DATE;
9385 v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
9386 l_max_template_date cz_pb_model_exports.last_xfr_activity%TYPE;
9387 l_capt_update_date DATE;
9388 l_ps_node_update_date DATE;
9389 v_descr_date DATE;
9390 BEGIN
9391 chk_if_aleady_published(publicationid, record_count);
9392 get_source_models(cz_pb_mgr.v_root_model_id, v_models_tbl);
9393 get_source_uis(cz_pb_mgr.v_root_model_id, v_models_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
9394 get_oa_uis(v_models_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref, cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
9395 get_oa_tmpls;
9396
9397 IF (record_count > 0)
9398 THEN
9399 get_last_xfr_activity(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_last_xfr_activity);
9400
9401 IF (g_object_type = MODEL_PUBLICATION)
9402 THEN
9403 ----check if logic has changed
9404 chk_if_logic_changed(v_models_tbl, v_last_xfr_activity, record_count);
9405 ----check if ARCHIVES got reloaded/changed
9406 chk_if_archives_changed(v_models_tbl, v_last_xfr_activity, record_count);
9407 ----check if structure has changed
9408 chk_if_struct_changed(v_models_tbl, v_last_xfr_activity, record_count);
9409
9410 -----check if model descripton has changed
9411 IF (v_models_tbl.COUNT > 0)
9412 THEN
9413 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9414 LOOP
9415 get_intl_text_date(v_models_tbl(i), v_descr_date);
9416
9417 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_descr_date))
9418 THEN
9419 record_count := 0;
9420 EXIT;
9421 END IF;
9422 END LOOP;
9423 END IF;
9424
9425 ----check if fc has changed
9426 get_fc_date(v_models_tbl, v_fc_update_date);
9427
9428 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_fc_update_date))
9429 THEN
9430 record_count := 0;
9431 END IF;
9432
9433 -----check if eff has changed
9434 get_eff_date(v_models_tbl, v_eff_update_date);
9435
9436 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_eff_update_date))
9437 THEN
9438 record_count := 0;
9439 END IF;
9440
9441 ----check if ps node names has changed
9442 IF (v_models_tbl.COUNT > 0)
9443 THEN
9444 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9445 LOOP
9446 get_psnode_last_date(v_models_tbl(i), l_ps_node_update_date);
9447
9448 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_ps_node_update_date)) THEN
9449 record_count := 0;
9450 EXIT;
9451 END IF;
9452 END LOOP;
9453 END IF;
9454
9455 ----check if captions text has changed
9456 IF (v_models_tbl.COUNT > 0)
9457 THEN
9458 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9459 LOOP
9460 BEGIN
9461 SELECT MAX(last_update_date)
9462 INTO l_capt_update_date
9463 FROM cz_intl_texts
9464 WHERE model_id = v_models_tbl(i);
9465 EXCEPTION
9466 WHEN OTHERS
9467 THEN
9468 l_capt_update_date := cz_utils.epoch_begin;
9469 END;
9470
9471 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
9472 THEN
9473 record_count := 0;
9474 EXIT;
9475 END IF;
9476 END LOOP;
9477 END IF;
9478
9479 -----check if capt rules have changed
9480 IF (v_models_tbl.COUNT > 0)
9481 THEN
9482 l_capt_update_date := cz_utils.epoch_begin;
9483
9484 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
9485 LOOP
9486 BEGIN
9487 SELECT last_update_date
9488 INTO l_capt_update_date
9489 FROM cz_devl_projects
9490 WHERE devl_project_id = v_models_tbl(i);
9491 EXCEPTION
9492 WHEN OTHERS
9493 THEN
9494 l_capt_update_date := cz_utils.epoch_begin;
9495 END;
9496
9497 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
9498 THEN
9499 record_count := 0;
9500 EXIT;
9501 END IF;
9502 END LOOP;
9503 END IF;
9504
9505 -----check if template elements have changed
9506 -- but actually these templs are new or changed ones!
9507 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
9508 THEN
9509 l_capt_update_date := cz_utils.epoch_begin;
9510
9511 FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
9512 LOOP
9513 BEGIN
9514 SELECT MAX(last_update_date)
9515 INTO l_capt_update_date
9516 FROM cz_ui_template_elements
9517 WHERE template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
9518 EXCEPTION
9519 WHEN OTHERS
9520 THEN
9521 l_capt_update_date := cz_utils.epoch_begin;
9522 END;
9523
9524 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
9525 THEN
9526 record_count := 0;
9527 EXIT;
9528 END IF;
9529 END LOOP;
9530 END IF;
9531
9532 ----check if uis have changed
9533 cz_pb_mgr.v_ui_str := 'x';
9534
9535 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
9536 THEN
9537 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
9538 LOOP
9539 get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(i), v_last_update_date);
9540
9541 IF (v_last_xfr_activity IS NULL)
9542 THEN
9543 cz_pb_mgr.v_ui_str := 'UI';
9544 EXIT;
9545 ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
9546 THEN
9547 cz_pb_mgr.v_ui_str := 'UI';
9548 EXIT;
9549 END IF;
9550 END LOOP;
9551 END IF;
9552
9553 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
9554 THEN
9555 get_template_date(cz_pb_mgr.g_ui_templates_old_temp_id_ref, v_last_update_date);
9556
9557 IF (v_last_xfr_activity IS NULL)
9558 THEN
9559 cz_pb_mgr.v_ui_str := 'UI';
9560 ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
9561 THEN
9562 cz_pb_mgr.v_ui_str := 'UI';
9563 END IF;
9564 END IF;
9565 ELSIF(g_object_type = template_publication)
9566 THEN
9567 get_max_template_date(cz_pb_mgr.v_root_model_id, l_max_template_date);
9568 END IF;
9569 END IF; /* end if of (record_count > 0) */
9570
9571 IF (g_object_type = MODEL_PUBLICATION)
9572 THEN
9573 IF ((record_count > 0) AND(cz_pb_mgr.v_ui_str <> 'UI'))
9574 THEN
9575 RETURN FALSE;
9576 ELSIF((record_count = refresh_rules_count) AND(cz_pb_mgr.v_ui_str <> 'UI'))
9577 THEN
9578 v_refresh_rules := 'YES';
9579 RETURN TRUE; ----refresh rules
9580 ELSIF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT = 0)
9581 THEN
9582 cz_pb_mgr.v_ui_str := 'x';
9583 RETURN TRUE;
9584 ELSE
9585 RETURN TRUE;
9586 END IF;
9587 ELSIF(g_object_type = template_publication)
9588 THEN
9589 IF (v_last_xfr_activity IS NULL)
9590 THEN
9591 RETURN TRUE;
9592 ELSIF(v_last_xfr_activity > l_max_template_date)
9593 THEN
9594 RETURN FALSE;
9595 ELSE
9596 RETURN TRUE;
9597 END IF;
9598 END IF;
9599 EXCEPTION
9600 WHEN OTHERS
9601 THEN
9602 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR', 'SQLERRM', SQLERRM);
9603 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.HAS_TOBE_PUBLISHED', SQLCODE);
9604 cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message, 1, 2000)));
9605 RAISE;
9606 END has_tobe_published;
9607
9608 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9609 ----procedure that removes duplicate values in models array
9610 ----
9611 PROCEDURE add_root_model(p_root_model_id IN NUMBER, p_models_array IN OUT NOCOPY cz_pb_mgr.t_ref)
9612 AS
9613 model_idx NUMBER := 0;
9614 root_model_found VARCHAR2(1) := 'F';
9615 BEGIN
9616 IF (p_models_array.COUNT > 0)
9617 THEN
9618 FOR i IN p_models_array.FIRST .. p_models_array.LAST
9619 LOOP
9620 IF (p_models_array(i) = p_root_model_id)
9621 THEN
9622 root_model_found := 'T';
9623 END IF;
9624 END LOOP;
9625 END IF;
9626
9627 IF (root_model_found <> 'T')
9628 THEN
9629 model_idx := p_models_array.COUNT + 1;
9630 p_models_array(model_idx) := p_root_model_id;
9631 END IF;
9632 EXCEPTION
9633 WHEN OTHERS
9634 THEN
9635 RAISE;
9636 END add_root_model;
9637
9638 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9639 ----procedure that returns the max node depth for a given child model
9640 ----if max node depth is greater than 1 then we need to determine the
9641 ----parent of this child (p_model_id) is exported or not.
9642 PROCEDURE get_max_node_depth(
9643 p_model_id IN cz_model_ref_expls.model_id%TYPE
9644 ,p_root_model_id IN cz_model_ref_expls.model_id%TYPE
9645 ,x_node_depth OUT NOCOPY cz_model_ref_expls.node_depth%TYPE
9646 )
9647 IS
9648 BEGIN
9649 SELECT MAX(node_depth)
9650 INTO x_node_depth
9651 FROM cz_model_ref_expls
9652 WHERE cz_model_ref_expls.deleted_flag = '0' AND cz_model_ref_expls.component_id = p_model_id AND cz_model_ref_expls.model_id = p_root_model_id;
9653 END get_max_node_depth;
9654
9655 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9656 -------procedure that adds a parent of a child that is being exported
9657 -------to the export array.
9658 -------The first step is collect all models (exported and not exported) into
9659 ------l_all_models_array. Loop over each child model in l_all_models_array
9660 ------and check if the child model node_depth is greater than 1. If greater than 1
9661 ------then get all the parents at all levels for that child model
9662 ------check if the parent is being exported, if not add it to the export array.
9663 ------The root model is not part of any of the arrays here. We check for
9664 ------child models only if greater than one level below.
9665 PROCEDURE add_parent_models(
9666 p_root_model_id IN cz_model_ref_expls.model_id%TYPE
9667 ,p_models_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
9668 ,p_models_not_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
9669 )
9670 IS
9671 l_component_id cz_model_ref_expls.component_id%TYPE;
9672 l_node_depth cz_model_ref_expls.node_depth%TYPE;
9673 rec_count NUMBER := 0;
9674 l_models_exported cz_pb_mgr.t_ref_idx_vc2;
9675 l_models_not_exported cz_pb_mgr.t_ref_idx_vc2;
9676 l_all_models_array cz_pb_mgr.t_ref;
9677
9678 CURSOR c_parent_models(p_component_id cz_model_ref_expls.component_id%TYPE, p_top_model_id cz_model_ref_expls.model_id%TYPE)
9679 IS
9680 SELECT component_id
9681 FROM cz_model_ref_expls
9682 WHERE cz_model_ref_expls.deleted_flag = '0'
9683 AND cz_model_ref_expls.ps_node_type IN(263, 264)
9684 AND cz_model_ref_expls.model_ref_expl_id IN(
9685 SELECT parent_expl_node_id
9686 FROM cz_model_ref_expls x
9687 WHERE x.deleted_flag = '0' AND x.component_id = p_component_id
9688 AND x.model_id = p_top_model_id);
9689 BEGIN
9690 IF (p_models_not_to_be_exported.COUNT > 0)
9691 THEN
9692 ----ALL child models both exported and non exported
9693 ----are collected into l_all_models_array
9694 l_all_models_array.DELETE;
9695
9696 SELECT x.component_id
9697 BULK COLLECT INTO l_all_models_array
9698 FROM cz_model_ref_expls x
9699 WHERE x.deleted_flag = '0'
9700 AND x.model_id = p_root_model_id
9701 AND (x.ps_node_type = 263 OR x.ps_node_type = 264)
9702 AND x.node_depth = (SELECT MAX(b.node_depth)
9703 FROM cz_model_ref_expls b
9704 WHERE x.component_id = b.component_id AND b.model_id = p_root_model_id AND b.deleted_flag = '0')
9705 ORDER BY node_depth DESC;
9706
9707 IF (p_models_to_be_exported.COUNT > 0)
9708 THEN
9709 FOR j IN p_models_to_be_exported.FIRST .. p_models_to_be_exported.LAST
9710 LOOP
9711 l_models_exported(p_models_to_be_exported(j)) := p_models_to_be_exported(j);
9712 END LOOP;
9713 END IF;
9714
9715 FOR k IN p_models_not_to_be_exported.FIRST .. p_models_not_to_be_exported.LAST
9716 LOOP
9717 l_models_not_exported(p_models_not_to_be_exported(k)) := p_models_not_to_be_exported(k);
9718 END LOOP;
9719 IF (l_all_models_array.COUNT > 0) THEN
9720 FOR i IN l_all_models_array.FIRST .. l_all_models_array.LAST
9721 LOOP
9722 IF (l_models_exported.EXISTS(l_all_models_array(i)))
9723 THEN
9724 ---get max node_depth from cz_model_ref_expls for the child model
9725 get_max_node_depth(l_all_models_array(i), p_root_model_id, l_node_depth);
9726
9727 -----check if node depth > 1, we are interested only if the child model
9728 -----is at a level greater than 1 in the tree.
9729 IF (l_node_depth > 1)
9730 THEN
9731 -----the cursor is required because, there can be multiple
9732 -----occurrences of the same component at different levels
9733 -----in the model tree. In such a case all the parents of the child
9734 ----- are exported
9735 OPEN c_parent_models(l_all_models_array(i), p_root_model_id);
9736
9737 LOOP
9738 FETCH c_parent_models
9739 INTO l_component_id;
9740
9741 EXIT WHEN c_parent_models%NOTFOUND;
9742
9743 IF (NOT l_models_exported.EXISTS(l_component_id))
9744 THEN
9745 l_models_exported(l_component_id) := l_component_id;
9746 rec_count := p_models_to_be_exported.COUNT + 1;
9747 p_models_to_be_exported(rec_count) := l_component_id;
9748 l_models_not_exported.DELETE(l_component_id);
9749 END IF;
9750 END LOOP;
9751
9752 CLOSE c_parent_models;
9753 END IF;
9754 END IF;
9755 END LOOP; /* end loop of l_all_models_array.FIRST */
9756 END IF;
9757 -----we do not want to loop over single idx arrays
9758 -----because we would be looping more number of times if the array is sparse
9759 p_models_not_to_be_exported.DELETE;
9760 rec_count := 0;
9761 IF (l_all_models_array.COUNT > 0) THEN
9762 FOR notexpmodel IN l_all_models_array.FIRST .. l_all_models_array.LAST
9763 LOOP
9764 IF (NOT l_models_exported.EXISTS(l_all_models_array(notexpmodel)))
9765 THEN
9766 rec_count := p_models_not_to_be_exported.COUNT + 1;
9767 p_models_not_to_be_exported(rec_count) := l_all_models_array(notexpmodel);
9768 END IF;
9769 END LOOP;
9770 END IF;
9771 END IF;
9772 EXCEPTION
9773 WHEN OTHERS
9774 THEN
9775 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9776 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9777
9778 IF (c_parent_models%ISOPEN)
9779 THEN
9780 CLOSE c_parent_models;
9781 END IF;
9782
9783 RAISE;
9784 END add_parent_models;
9785 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9786 ------Procedure that retrieves the remote model id of the target model
9787 ------@p_server_id --- server local id of target instance
9788 ------@x_status --- publication status
9789 ------@p_model_id --- source model id
9790 ------@x_remote_model_id -- retrieved remote model id
9791 PROCEDURE get_remote_model_id(
9792 p_server_id IN cz_servers.server_local_id%TYPE
9793 ,p_model_id IN cz_pb_model_exports.model_id%TYPE
9794 ,x_status IN OUT NOCOPY VARCHAR2
9795 ,x_remote_model_id IN OUT NOCOPY cz_pb_model_exports.model_id%TYPE
9796 )
9797 AS
9798 BEGIN
9799 IF ((x_status <> PUBLICATION_ERROR) AND (cz_pb_mgr.v_session_parameter <> model_copy)) THEN
9800 IF cz_pb_mgr.v_cz_ps_nodes_idx_tbl.EXISTS(p_model_id) THEN
9801 x_remote_model_id := cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id);
9802 ELSE
9803 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model THEN
9804 IF p_server_id=0 THEN
9805 SELECT remote_model_id INTO x_remote_model_id
9806 FROM cz_pb_model_exports
9807 WHERE export_id=(SELECT max(export_id)
9808 FROM cz_pb_model_exports
9809 WHERE model_id=p_model_id AND server_id=0
9810 AND status='OK' AND migration_group_id=g_migration_group_id);
9811 ELSE
9812 EXECUTE IMMEDIATE 'SELECT remote_model_id '
9813 || ' '
9814 || 'FROM cz_pb_model_exports'
9815 || ' '
9816 || 'WHERE cz_pb_model_exports.server_id = :1'
9817 || ' '
9818 || 'AND cz_pb_model_exports.export_id = '
9819 || ' '
9820 || '(SELECT MIN(export_id)'
9821 || ' '
9822 || 'FROM cz_pb_model_exports x, cz_devl_projects'
9823 || cz_pb_mgr.v_db_link
9824 || ' farprj'
9825 || ' '
9826 || 'WHERE x.server_id = :2'
9827 || ' '
9828 || 'AND x.model_id = :3'
9829 || ' '
9830 || 'AND x.status = ''OK'''
9831 || ' '
9832 || 'AND x.remote_model_id = farprj.devl_project_id'
9833 || ' '
9834 || 'AND farprj.deleted_flag = ''0'''
9835 || ' '
9836 || 'AND farprj.post_migr_change_flag = :4'
9837 || ' '
9838 || 'AND x.migration_group_id IS NOT NULL)'
9839 || ' '
9840 || 'AND cz_pb_model_exports.model_id = :5'
9841 || ' '
9842 || 'AND cz_pb_model_exports.status = ''OK'''
9843 INTO x_remote_model_id
9844 USING p_server_id, p_server_id, p_model_id, cz_model_migration_pvt.change_flag_unchanged, p_model_id;
9845 END IF;
9846 ELSE
9847 SELECT cz_pb_model_exports.remote_model_id
9848 INTO x_remote_model_id
9849 FROM cz_pb_model_exports
9850 WHERE cz_pb_model_exports.server_id = p_server_id
9851 AND cz_pb_model_exports.export_id =
9852 (SELECT MAX(export_id)
9853 FROM cz_pb_model_exports
9854 WHERE cz_pb_model_exports.server_id = p_server_id
9855 AND cz_pb_model_exports.model_id = p_model_id
9856 AND cz_pb_model_exports.status = 'OK'
9857 AND migration_group_id IS NULL)
9858 AND cz_pb_model_exports.model_id = p_model_id
9859 AND cz_pb_model_exports.status = 'OK';
9860 END IF;
9861
9862 cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id) := x_remote_model_id;
9863 END IF;
9864
9865 ELSE
9866 x_remote_model_id := p_model_id;
9867 END IF;
9868 EXCEPTION
9869 WHEN OTHERS THEN
9870 cz_pb_mgr.v_err_message :=
9871 'Error in retrieving remote model id from model exports for model : ' || p_model_id || ' on ' || p_server_id || ' : ' || SQLERRM;
9872 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMMODELID', SQLCODE);
9873 x_status := PUBLICATION_ERROR;
9874 RAISE;
9875 END get_remote_model_id;
9876 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9877 ------ get_models_tobe_exported gets all models to be exported and those
9878 ------ that are not to be exported to the production database
9879 ------ v_models_to_be_exported
9880 ------ v_models_not_to_be_exported
9881 ----- call to add_root_model add the root model if it does not exist
9882 PROCEDURE get_models_tobe_exported(rootmodelid IN NUMBER)
9883 AS
9884 CURSOR model_cur(in_root_model NUMBER)
9885 IS
9886 SELECT DISTINCT component_id
9887 FROM cz_model_ref_expls x
9888 WHERE x.model_id = in_root_model AND x.deleted_flag = '0' AND(x.ps_node_type = 263 OR x.ps_node_type = 264);
9889
9890 v_count PLS_INTEGER := 0;
9891 v_models model_id_table;
9892 record_index NUMBER := 0;
9893 not_exported_record_index NUMBER := 0;
9894 v_model_id cz_model_publications.model_id%TYPE;
9895 v_expr_last_update cz_expression_nodes.last_update_date%TYPE;
9896 l_exp_models_idx_ref cz_pb_mgr.t_ref_idx_vc2;
9897 l_intl_text_date DATE;
9898 l_eff_set_date DATE;
9899 l_max_arc_date DATE;
9900 l_max_ui_date DATE;
9901 l_ps_node_update_date DATE;
9902 l_remote_model_cur ref_cursor;
9903 l_remote_model cz_pb_model_exports.model_id%TYPE;
9904 l_remote_proj cz_pb_model_exports.model_id%TYPE;
9905 l_remote_name VARCHAR2(32000);
9906 child_model_ui_has_changed BOOLEAN := FALSE;
9907 BEGIN
9908 cz_pb_mgr.v_models_to_be_exported.DELETE;
9909 cz_pb_mgr.v_models_not_to_be_exported.DELETE;
9910
9911 IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
9912 THEN
9913 OPEN model_cur(rootmodelid);
9914
9915 /* Bug 5523268
9916 * Check the changes to the UI in Source as well
9917 * Check for the change in the entire reference structure. I
9918 * if there is a change in the UI of child models, pick that up
9919 * as well;
9920 */
9921
9922 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9923 THEN
9924 child_model_ui_has_changed :=has_ui_inany_chld_mdl_changed(rootmodelid);
9925 END IF;
9926
9927 IF (cz_pb_mgr.v_ui_str = 'UI' or child_model_ui_has_changed )
9928 THEN
9929 LOOP
9930 FETCH model_cur
9931 INTO v_model_id;
9932
9933 EXIT WHEN model_cur%NOTFOUND;
9934 record_index := record_index + 1;
9935 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9936 END LOOP;
9937
9938 add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
9939 ELSE
9940 LOOP
9941 FETCH model_cur
9942 INTO v_model_id;
9943
9944 EXIT WHEN model_cur%NOTFOUND;
9945 v_count := 0;
9946
9947 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
9948 IF cz_pb_mgr.v_server_id = 0 THEN
9949 SELECT COUNT(*) INTO v_count
9950 FROM cz_pb_model_exports
9951 WHERE model_id=v_model_id AND status=publication_ok AND server_id=0
9952 AND migration_group_id=g_migration_group_id;
9953 ELSE
9954 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM cz_pb_model_exports x, cz_devl_projects'
9955 || cz_pb_mgr.v_db_link
9956 || ' farprj'
9957 || ' '
9958 || 'WHERE x.model_id = :1'
9959 || ' '
9960 || 'AND x.status = :2'
9961 || ' '
9962 || 'AND x.server_id = :3'
9963 || ' '
9964 || 'AND x.remote_model_id = farprj.devl_project_id'
9965 || ' '
9966 || 'AND farprj.deleted_flag = ''0'''
9967 || ' '
9968 || 'AND farprj.post_migr_change_flag = :4'
9969 || ' '
9970 || 'AND x.migration_group_id IS NOT NULL'
9971 INTO v_count
9972 USING v_model_id, publication_ok, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged;
9973 END IF;
9974 ELSE
9975 SELECT COUNT(*)
9976 INTO v_count
9977 FROM cz_pb_model_exports x
9978 WHERE x.model_id = v_model_id AND x.status = publication_ok AND x.server_id = cz_pb_mgr.v_server_id
9979 AND migration_group_id IS NULL;
9980 END IF;
9981
9982 IF (v_count = 0)
9983 THEN
9984 record_index := record_index + 1;
9985 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9986 ELSE
9987 v_count := 0;
9988
9989 -------check if expr nodes have changed since the model was last published
9990 SELECT MAX(last_update_date)
9991 INTO v_expr_last_update
9992 FROM cz_expression_nodes t
9993 WHERE t.deleted_flag = '0'
9994 AND t.expr_type <> 208
9995 AND EXISTS(SELECT 1
9996 FROM cz_rules
9997 WHERE rule_id = t.rule_id AND devl_project_id = v_model_id AND deleted_flag = '0')
9998 AND t.deleted_flag = '0'
9999 AND t.expr_type <> 208;
10000
10001 IF (v_expr_last_update IS NULL)
10002 THEN
10003 v_expr_last_update := cz_utils.epoch_begin;
10004 END IF;
10005
10006 -----effectivitity set check
10007 get_effectivity_set_date(v_model_id, l_eff_set_date);
10008
10009 IF (l_eff_set_date > v_expr_last_update)
10010 THEN
10011 v_expr_last_update := l_eff_set_date;
10012 END IF;
10013
10014 ------check if intl text has changed
10015 get_intl_text_date(v_model_id, l_intl_text_date);
10016
10017 IF (l_intl_text_date > v_expr_last_update)
10018 THEN
10019 v_expr_last_update := l_intl_text_date;
10020 END IF;
10021
10022 get_psnode_last_date(v_model_id, l_ps_node_update_date);
10023 IF (l_ps_node_update_date > v_expr_last_update)
10024 THEN
10025 v_expr_last_update := l_ps_node_update_date;
10026 END IF;
10027
10028
10029 -----------end expr nodes check
10030 SELECT GREATEST(MAX(arc.last_update_date), MAX(REF.last_update_date))
10031 INTO l_max_arc_date
10032 FROM cz_archives arc, cz_archive_refs REF
10033 WHERE REF.devl_project_id = v_model_id AND arc.archive_id = REF.archive_id AND arc.deleted_flag = '0' AND REF.deleted_flag = '0';
10034
10035 IF l_max_arc_date IS NOT NULL AND l_max_arc_date > v_expr_last_update
10036 THEN
10037 v_expr_last_update := l_max_arc_date;
10038 END IF;
10039
10040 -- check if any new ui created after last xfr activity
10041 -- call get_max_ui_date if this check still not enough
10042 SELECT MAX(creation_date) INTO l_max_ui_date
10043 FROM cz_ui_defs
10044 WHERE deleted_flag = '0' AND devl_project_id = v_model_id AND ui_style <> '-1';
10045 IF l_max_ui_date IS NOT NULL AND l_max_ui_date > v_expr_last_update THEN
10046 v_expr_last_update := l_max_ui_date;
10047 END IF;
10048
10049 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
10050 IF cz_pb_mgr.v_server_id = 0 THEN
10051 SELECT COUNT(*) INTO v_count
10052 FROM cz_devl_projects x, cz_pb_model_exports y
10053 WHERE x.devl_project_id = y.model_id
10054 AND x.last_update_date < y.last_xfr_activity
10055 AND y.last_xfr_activity > v_expr_last_update
10056 AND y.model_id = v_model_id AND y.server_id = 0
10057 AND y.status = 'OK' AND y.migration_group_id = g_migration_group_id;
10058 ELSE
10059 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM cz_devl_projects x, cz_pb_model_exports y, cz_devl_projects'
10060 || cz_pb_mgr.v_db_link
10061 || ' farprj'
10062 || ' '
10063 || 'WHERE x.devl_project_id = y.model_id'
10064 || ' '
10065 || 'AND x.last_update_date < y.last_xfr_activity'
10066 || ' '
10067 || 'AND y.last_xfr_activity > :1'
10068 || ' '
10069 || 'AND y.model_id = :2'
10070 || ' '
10071 || 'AND y.server_id = :3'
10072 || ' '
10073 || 'AND y.remote_model_id = farprj.devl_project_id'
10074 || ' '
10075 || 'AND farprj.deleted_flag = ''0'''
10076 || ' '
10077 || 'AND farprj.post_migr_change_flag = :4'
10078 || ' '
10079 || 'AND y.migration_group_id IS NOT NULL AND y.status = :5'
10080 INTO v_count
10081 USING v_expr_last_update, v_model_id, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged, publication_ok;
10082 END IF;
10083 ELSE
10084 SELECT COUNT(*)
10085 INTO v_count
10086 FROM cz_devl_projects x, cz_pb_model_exports y
10087 WHERE x.devl_project_id = y.model_id
10088 AND x.last_update_date < y.last_xfr_activity
10089 AND y.last_xfr_activity > v_expr_last_update
10090 AND y.model_id = v_model_id
10091 AND y.server_id = cz_pb_mgr.v_server_id
10092 AND y.status = 'OK' AND y.migration_group_id IS NULL;
10093 END IF;
10094
10095 IF (v_count = 0)
10096 THEN
10097 record_index := record_index + 1;
10098 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10099 ELSE
10100 -----check if the model exists and is not deleted
10101 l_remote_model := 0;
10102 l_remote_proj := 0;
10103
10104 BEGIN
10105 get_remote_model_id(cz_pb_mgr.v_server_id, v_model_id, cz_pb_mgr.v_status_code, l_remote_model);
10106 EXCEPTION
10107 WHEN NO_DATA_FOUND THEN
10108 record_index := record_index + 1;
10109 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10110 END;
10111
10112 IF (l_remote_model > 0)
10113 THEN
10114 OPEN l_remote_model_cur FOR 'SELECT devl_project_id,'
10115 || ' '
10116 || 'REPLACE(cz_developer_utils_pvt.get_repository_path'
10117 || cz_pb_mgr.v_db_link
10118 || ' '
10119 || '(devl_project_id, ''PRJ''), ''/'', ''.'')'
10120 || ' '
10121 || 'FROM cz_devl_projects'
10122 || cz_pb_mgr.v_db_link
10123 || ' t'
10124 || ' '
10125 || 'WHERE t.devl_project_id = :1'
10126 || ' '
10127 || 'AND t.deleted_flag = ''0''' USING l_remote_model;
10128
10129 LOOP
10130 FETCH l_remote_model_cur
10131 INTO l_remote_proj, l_remote_name;
10132
10133 EXIT WHEN l_remote_model_cur%NOTFOUND;
10134 END LOOP;
10135
10136 CLOSE l_remote_model_cur;
10137
10138 IF (l_remote_proj > 0)
10139 THEN
10140 not_exported_record_index := not_exported_record_index + 1;
10141 cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id;
10142 v_remote_names_not_exported(v_model_id) := l_remote_name;
10143 ELSE
10144 record_index := record_index + 1;
10145 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10146 END IF;
10147 END IF;
10148 END IF;
10149 END IF;
10150 END LOOP;
10151
10152 add_parent_models(rootmodelid, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_models_not_to_be_exported);
10153 add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
10154 END IF;
10155
10156 CLOSE model_cur;
10157 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
10158 THEN
10159 l_exp_models_idx_ref.DELETE;
10160
10161 OPEN model_cur(rootmodelid);
10162
10163 LOOP
10164 FETCH model_cur
10165 INTO v_model_id;
10166
10167 EXIT WHEN model_cur%NOTFOUND;
10168
10169 IF (cz_pb_mgr.copy_root_only = 'NO')
10170 THEN
10171 record_index := record_index + 1;
10172 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
10173 l_exp_models_idx_ref(v_model_id) := v_model_id;
10174 ELSIF(cz_pb_mgr.copy_root_only = 'YES')
10175 THEN
10176 NULL;
10177 ----not_exported_record_index := not_exported_record_index + 1;
10178 ----cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id ;
10179 END IF;
10180 END LOOP;
10181
10182 CLOSE model_cur;
10183
10184 IF (NOT l_exp_models_idx_ref.EXISTS(rootmodelid))
10185 THEN
10186 record_index := record_index + 1;
10187 cz_pb_mgr.v_models_to_be_exported(record_index) := rootmodelid;
10188 END IF;
10189 END IF;
10190 EXCEPTION
10191 WHEN OTHERS
10192 THEN
10193 CLOSE model_cur;
10194
10195 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10196 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10197 RAISE;
10198 END get_models_tobe_exported;
10199
10200 ---->>>>>>>>>>>>>>>>>>>>>>>>>
10201 ---------Creates an export request for each model in the PL/SQL table cz_pb_mgr.v_models_to_be_exported
10202 PROCEDURE create_export_request(rootmodelid IN NUMBER, modelid IN NUMBER, publicationid IN NUMBER, serverid IN NUMBER)
10203 AS
10204 v_node_depth cz_model_ref_expls.node_depth%TYPE;
10205 BEGIN
10206 SELECT NVL(MAX(node_depth), 0)
10207 INTO v_node_depth
10208 FROM cz_model_ref_expls
10209 WHERE model_id = rootmodelid AND component_id = modelid AND deleted_flag = '0';
10210
10211 INSERT INTO cz_pb_model_exports
10212 (export_id, export_seq, model_id, root_model_id, server_id, publication_id, export_reverse_seq
10213 ,superseded_flag, last_xfr_activity, creation_date, last_update_date, created_by, last_updated_by, migration_group_id
10214 )
10215 VALUES (cz_pb_model_exports_s.NEXTVAL, cz_pb_model_exports_s.CURRVAL, modelid, rootmodelid, serverid, publicationid, NVL(v_node_depth, 0)
10216 ,'N', SYSDATE, SYSDATE, SYSDATE, 1, 1, cz_pb_mgr.g_migration_group_id
10217 );
10218
10219 SELECT cz_pb_model_exports_s.CURRVAL
10220 INTO cz_pb_mgr.v_export_id
10221 FROM DUAL;
10222
10223 COMMIT;
10224 EXCEPTION
10225 WHEN OTHERS
10226 THEN
10227 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXP_REQUEST_ERR', 'MODELID', modelid);
10228 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CREATE_EXPORT_REQUEST', SQLCODE);
10229 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10230 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10231 RAISE;
10232 END create_export_request;
10233
10234 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10235 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10236 PROCEDURE create_copy_requests
10237 IS
10238 BEGIN
10239 IF ((cz_pb_mgr.v_session_parameter = model_copy) AND(cz_pb_mgr.v_models_not_to_be_exported.COUNT > 0))
10240 THEN
10241 FOR copyid IN cz_pb_mgr.v_models_not_to_be_exported.FIRST .. cz_pb_mgr.v_models_not_to_be_exported.LAST
10242 LOOP
10243 create_export_request(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_models_not_to_be_exported(copyid), cz_pb_mgr.v_publication_id, 0);
10244
10245 UPDATE cz_pb_model_exports
10246 SET remote_model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid)
10247 ,status = publication_ok
10248 WHERE cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id
10249 AND cz_pb_model_exports.model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid);
10250 END LOOP;
10251 END IF;
10252
10253 COMMIT;
10254 EXCEPTION
10255 WHEN OTHERS
10256 THEN
10257 RAISE;
10258 END create_copy_requests;
10259
10260 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10261 -------------procedure to check publications on target instance
10262 PROCEDURE remote_pb_check(p_publication_id NUMBER)
10263 IS
10264 remote_pb_cv ref_cursor;
10265 v_publication_id NUMBER := 0;
10266 v_remote_link cz_servers.fndnam_link_name%TYPE;
10267 BEGIN
10268 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10269 THEN
10270 IF ((p_publication_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
10271 THEN
10272 v_remote_link := retrieve_db_link(cz_pb_mgr.v_server_id);
10273 cz_pb_mgr.v_insert_string :=
10274 'SELECT publication_id FROM cz_model_publications' || v_remote_link || ' t' || ' ' || 'WHERE t.publication_id = '
10275 || p_publication_id;
10276
10277 OPEN remote_pb_cv FOR cz_pb_mgr.v_insert_string;
10278
10279 LOOP
10280 FETCH remote_pb_cv
10281 INTO v_publication_id;
10282
10283 EXIT WHEN remote_pb_cv%NOTFOUND;
10284 END LOOP;
10285
10286 CLOSE remote_pb_cv;
10287
10288 IF (v_publication_id = 0)
10289 THEN
10290 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'PUBID', p_publication_id);
10291 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
10292 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10293 END IF;
10294 END IF;
10295 END IF;
10296 EXCEPTION
10297 WHEN OTHERS
10298 THEN
10299 CLOSE remote_pb_cv;
10300
10301 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'SQLERRM', SQLERRM);
10302 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
10303 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10304 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10305 RAISE;
10306 END remote_pb_check;
10307
10308 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10309 ------insert into effectivity sets table
10310 PROCEDURE insert_eff_sets(
10311 p_eff_set_id_ref IN cz_pb_mgr.t_ref
10312 ,p_eff_sets_old_key IN OUT NOCOPY cz_pb_mgr.t_ref
10313 ,p_eff_sets_new_key IN OUT NOCOPY cz_pb_mgr.t_ref
10314 ,p_eff_single_idx_key IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
10315 ,p_old_key_name IN VARCHAR2
10316 ,p_new_key_name IN VARCHAR2
10317 ,p_eff_text IN VARCHAR2
10318 )
10319 IS
10320 plsql_table_list cz_pb_mgr.col_plsql_table_list;
10321 v_cz_eff_sets_old_ref cz_pb_mgr.t_ref;
10322 v_cz_eff_sets_new_ref cz_pb_mgr.t_ref;
10323 check_all_null BOOLEAN := FALSE;
10324 v_eff_count PLS_INTEGER := 0;
10325 rec_count PLS_INTEGER := 0;
10326 l_eff_set_new_id NUMBER := NULL;
10327 l_eff_sets_exist_key cz_pb_mgr.t_ref;
10328 BEGIN
10329 IF (p_eff_set_id_ref.COUNT > 0)
10330 THEN
10331 p_eff_sets_old_key.DELETE;
10332 p_eff_sets_new_key.DELETE;
10333 l_eff_sets_exist_key.DELETE;
10334 p_eff_single_idx_key.DELETE;
10335 cz_pb_mgr.v_cz_eff_sets_idx_tbl.DELETE;
10336 cz_pb_mgr.g_eff_set_obj_type.DELETE;
10337 cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
10338 cz_pb_mgr.v_cz_eff_sets_new_tbl.DELETE;
10339 check_all_null := TRUE;
10340
10341 FOR p IN p_eff_set_id_ref.FIRST .. p_eff_set_id_ref.LAST
10342 LOOP
10343 IF (p_eff_set_id_ref(p) IS NOT NULL)
10344 THEN
10345 BEGIN
10346 check_all_null := FALSE;
10347 v_cz_eff_sets_old_ref.DELETE;
10348 v_cz_eff_sets_new_ref.DELETE;
10349
10350 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_effectivity_sets_seq
10351 , 'cz_effectivity_sets_s.nextval' || cz_pb_mgr.v_db_link
10352 ,cz_pb_mgr.v_oraclesequenceincr
10353 )
10354 ,effectivity_set_id
10355 BULK COLLECT INTO v_cz_eff_sets_new_ref
10356 ,v_cz_eff_sets_old_ref
10357 FROM cz_effectivity_sets
10358 WHERE cz_effectivity_sets.effectivity_set_id = p_eff_set_id_ref(p) AND cz_effectivity_sets.deleted_flag = '0';
10359 EXCEPTION
10360 WHEN NO_DATA_FOUND
10361 THEN
10362 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
10363 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EFFSETS', SQLCODE);
10364 WHEN OTHERS
10365 THEN
10366 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_effectivity_sets', 'SQLERRM', SQLERRM);
10367 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
10368 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10369 END;
10370
10371 IF (v_cz_eff_sets_new_ref.COUNT > 0)
10372 THEN
10373 v_eff_count := cz_pb_mgr.v_cz_eff_sets_new_tbl.COUNT;
10374
10375 FOR r IN v_cz_eff_sets_new_ref.FIRST .. v_cz_eff_sets_new_ref.LAST
10376 LOOP
10377 IF (v_cz_eff_sets_new_ref(r) IS NOT NULL)
10378 THEN
10379 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10380 THEN
10381 l_eff_set_new_id := mm_sync_eff_sets(v_cz_eff_sets_old_ref(r), v_cz_eff_sets_new_ref(r));
10382
10383 IF ((l_eff_set_new_id IS NULL) AND(NOT v_cz_eff_sets_idx_tbl.EXISTS(v_cz_eff_sets_old_ref(r))))
10384 THEN
10385 l_eff_set_new_id := v_cz_eff_sets_new_ref(r);
10386 v_eff_count := v_eff_count + 1;
10387 p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
10388 p_eff_sets_new_key(v_eff_count) := l_eff_set_new_id;
10389 cz_pb_mgr.g_eff_set_obj_type(v_eff_count) := 'EFF';
10390 cz_pb_mgr.g_enclosing_fld_rp_entry(v_eff_count) := cz_pb_mgr.g_migration_tgt_folder_id;
10391 cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=p_eff_sets_new_key(v_eff_count);
10392 ELSE
10393 cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=l_eff_set_new_id;
10394 END IF;
10395 ELSE
10396 v_eff_count := v_eff_count + 1;
10397 p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
10398 p_eff_sets_new_key(v_eff_count) := v_cz_eff_sets_new_ref(r);
10399 cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=v_cz_eff_sets_new_ref(r);
10400 END IF;
10401 END IF;
10402 END LOOP;
10403 END IF;
10404 END IF;
10405 END LOOP;
10406
10407 ------------------insert into cz effectivity sets
10408 plsql_table_list.DELETE;
10409 rec_count := 1;
10410 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
10411 plsql_table_list(rec_count).table_name := p_new_key_name;
10412
10413 IF (NOT check_all_null)
10414 THEN
10415 BEGIN
10416 insert_into_table('cz_effectivity_sets'
10417 ,'effectivity_set_id'
10418 ,cz_pb_mgr.v_db_link
10419 ,plsql_table_list
10420 ,p_old_key_name
10421 ,p_eff_sets_old_key
10422 );
10423
10424 IF (p_eff_sets_new_key.COUNT > 0 AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10425 THEN
10426 ----------begin insert into cz_rp_entries----------------
10427 plsql_table_list.DELETE;
10428 rec_count := 1;
10429 plsql_table_list(rec_count).col_name := 'object_id';
10430 plsql_table_list(rec_count).table_name := p_new_key_name;
10431 rec_count := rec_count + 1;
10432 plsql_table_list(rec_count).col_name := 'object_type';
10433 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_eff_set_obj_type';
10434 rec_count := rec_count + 1;
10435 plsql_table_list(rec_count).col_name := 'enclosing_folder';
10436 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
10437 insert_into_rp_entries('cz_rp_entries'
10438 ,'object_id'
10439 ,'object_type'
10440 ,cz_pb_mgr.v_db_link
10441 ,plsql_table_list
10442 ,p_old_key_name
10443 ,'cz_pb_mgr.g_eff_set_obj_type'
10444 ,p_eff_sets_old_key
10445 ,cz_pb_mgr.g_eff_set_obj_type
10446 );
10447 ----------end insert into cz_rp_entries----------------
10448 END IF;
10449
10450 COMMIT;
10451 EXCEPTION
10452 WHEN OTHERS
10453 THEN
10454 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10455 END;
10456 END IF;
10457
10458 p_eff_sets_old_key.DELETE;
10459 p_eff_sets_new_key.DELETE;
10460 END IF;
10461 EXCEPTION
10462 WHEN OTHERS
10463 THEN
10464 cz_pb_mgr.v_err_message := 'Insert into cz eff sets for: ' || p_eff_text;
10465 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
10466 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10467 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10468 RAISE;
10469 END insert_eff_sets;
10470
10471 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10472 -----procedure that verifies if the model being published is a BOM model
10473 -----and is being published to a different instance different from the one
10474 -----it has been imported from.
10475 -----@p_server_id is the target_server_id
10476 -----@p_model_id is the devl_project_id of the model being published
10477 -----@cz_pb_mgr.bom_flag is the out parameter: 'Y' indicates the model is to be
10478 -----synchronized. 'N' indicates that no sync is necessary.
10479 PROCEDURE verify_model_for_sync(p_server_id IN cz_servers.server_local_id%TYPE, p_model_id IN cz_devl_projects.devl_project_id%TYPE)
10480 AS
10481 v_source_server NUMBER;
10482 v_bom_persistent_node_id NUMBER;
10483 v_bom_ps_node_id NUMBER;
10484 v_bom_err_flag VARCHAR2(1);
10485 v_bom_err_msg VARCHAR2(2000);
10486 v_verify_model_run_id NUMBER;
10487 v_bomsynch_err_flag VARCHAR2(2000);
10488 v_model_name cz_devl_projects.NAME%TYPE;
10489
10490 TYPE verify_model_message_list IS TABLE OF cz_db_logs.MESSAGE%TYPE
10491 INDEX BY BINARY_INTEGER;
10492
10493 v_verify_model_msg_ref verify_model_message_list;
10494 BEGIN
10495 -------no synchronization required if published locally
10496 IF ((p_server_id <> 0) AND(g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10497 )
10498 THEN
10499 -----call to this procedure made to determine if the model being published
10500 -----contains a BOM
10501 cz_runtime.get_root_bom_node(p_model_id, v_bom_persistent_node_id, v_bom_ps_node_id, v_bom_err_flag, v_bom_err_msg);
10502
10503 --------v_bom_err_flag = 0 indicates that the model contains a single BOM
10504 --------if it contains a single BOM identify the server from where the model
10505 --------was imported
10506 IF (v_bom_err_flag = '0')
10507 THEN
10508 SELECT source_server
10509 INTO v_source_server
10510 FROM cz_xfr_project_bills
10511 WHERE model_ps_node_id = (SELECT devl_project_id
10512 FROM cz_ps_nodes
10513 WHERE cz_ps_nodes.ps_node_id = v_bom_ps_node_id AND cz_ps_nodes.deleted_flag = '0');
10514
10515 ------if the server from where it was imported is different from the target
10516 ------to which it is being published then call the bom sync procedure
10517 ------else no sync required
10518 IF (v_source_server <> p_server_id)
10519 THEN
10520 BEGIN
10521 SELECT local_name
10522 INTO cz_pb_mgr.v_server_local_name
10523 FROM cz_servers
10524 WHERE cz_servers.server_local_id = p_server_id;
10525 EXCEPTION
10526 WHEN NO_DATA_FOUND
10527 THEN
10528 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_NO_SERVER_NAME_FOUND', 'SERVERID', p_server_id);
10529 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
10530 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10531 WHEN OTHERS
10532 THEN
10533 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SERVER_NAME_ERR', 'SERVERID', p_server_id);
10534 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
10535 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10536 END;
10537
10538 cz_bom_synch.verify_model(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_local_name, v_bomsynch_err_flag, v_verify_model_run_id);
10539
10540 ----- if v_bomsynch_err_flag is not success then set publication status to ERROR
10541 IF (v_bomsynch_err_flag <> cz_bom_synch.error_flag_success)
10542 THEN
10543 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10544
10545 BEGIN
10546 SELECT NAME
10547 INTO v_model_name
10548 FROM cz_devl_projects
10549 WHERE devl_project_id = cz_pb_mgr.v_root_model_id AND deleted_flag = '0';
10550 EXCEPTION
10551 WHEN OTHERS
10552 THEN
10553 v_model_name := 'Model name not found for model_id: ' || cz_pb_mgr.v_root_model_id;
10554 END;
10555
10556 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_VERIFY_ERR', 'MODELNAME', v_model_name);
10557 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROC', SQLCODE);
10558
10559 ----trap errors from verify model to populate cz_db_logs
10560 BEGIN
10561 SELECT MESSAGE
10562 BULK COLLECT INTO v_verify_model_msg_ref
10563 FROM cz_db_logs
10564 WHERE cz_db_logs.run_id = v_verify_model_run_id;
10565 EXCEPTION
10566 WHEN NO_DATA_FOUND
10567 THEN
10568 cz_pb_mgr.v_err_message := 'No messages from verify model procedure';
10569 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
10570 WHEN OTHERS
10571 THEN
10572 cz_pb_mgr.v_err_message := 'ERROR in bulk collect of messages for verify_model_procedure: ' || SQLERRM;
10573 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
10574 END;
10575
10576 IF (v_verify_model_msg_ref.COUNT > 0)
10577 THEN
10578 FOR j IN v_verify_model_msg_ref.FIRST .. v_verify_model_msg_ref.LAST
10579 LOOP
10580 IF (v_verify_model_msg_ref(j) IS NOT NULL)
10581 THEN
10582 cz_pb_mgr.v_err_message := v_verify_model_msg_ref(j);
10583 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
10584 END IF;
10585 END LOOP;
10586 END IF;
10587 ELSE
10588 cz_pb_mgr.bomsynch_flag := 'Y';
10589 END IF;
10590 ELSE
10591 cz_pb_mgr.bomsynch_flag := 'N';
10592 END IF;
10593 ----- v_bom_err_flag = 2 then NO BOM SYNC to be done
10594 ELSIF(v_bom_err_flag = '2')
10595 THEN
10596 cz_pb_mgr.bomsynch_flag := 'N';
10597 cz_pb_mgr.v_err_message := 'No BOM component found in model: ' || TO_CHAR(p_model_id);
10598 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
10599 -----v_bom_err_flag is not 0 or 2 set the publication status to ERROR
10600 ELSE
10601 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10602 cz_pb_mgr.v_err_message := 'Error: two bom models exist in model: ' || TO_CHAR(p_model_id);
10603 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
10604 END IF;
10605 ELSE
10606 cz_pb_mgr.bomsynch_flag := 'N';
10607 END IF;
10608 EXCEPTION
10609 WHEN OTHERS
10610 THEN
10611 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_PROC_ERR', 'SQLERRM', SQLERRM);
10612 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
10613 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10614 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10615 RAISE;
10616 END verify_model_for_sync;
10617
10618 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10619 ------procedure to get synchronized values for organization_id,
10620 ------top_item_id and product_key of cz_model_publications
10621 ------If no bom synch required, then default values are returned
10622 PROCEDURE get_synchronized_pb_values(p_publication_id IN NUMBER)
10623 IS
10624 BEGIN
10625 IF (p_publication_id > 0)
10626 THEN
10627 SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_orgid(organization_id), 'N', organization_id)
10628 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_topitemid(top_item_id), 'N', top_item_id)
10629 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_productkey(product_key), 'N', product_key)
10630 INTO cz_pb_mgr.v_bomsynch_org_id
10631 ,cz_pb_mgr.v_bomsynch_item_id
10632 ,cz_pb_mgr.v_bomsynch_product_key
10633 FROM cz_model_publications
10634 WHERE cz_model_publications.publication_id = p_publication_id;
10635 END IF;
10636 EXCEPTION
10637 WHEN OTHERS
10638 THEN
10639 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GET_SYNC_ERR', 'SQLERRM', SQLERRM);
10640 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETSYNCVALUES', SQLCODE);
10641 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10642 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10643 RAISE;
10644 END get_synchronized_pb_values;
10645
10646 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10647 ------function returns true when p_str is a number
10648 ------used in replace_lce_texts
10649 FUNCTION is_number(p_str IN VARCHAR2)
10650 RETURN BOOLEAN
10651 IS
10652 v_numval NUMBER;
10653 BEGIN
10654 IF (p_str IS NOT NULL)
10655 THEN
10656 v_numval := TO_NUMBER(p_str);
10657 RETURN TRUE;
10658 ELSE
10659 RETURN FALSE;
10660 END IF;
10661 EXCEPTION
10662 WHEN OTHERS
10663 THEN
10664 RETURN FALSE;
10665 END is_number;
10666
10667 FUNCTION is_val_number (p_str IN VARCHAR2)
10668 RETURN VARCHAR2 IS
10669
10670 BEGIN
10671
10672 IF(is_number(p_str))
10673 THEN
10674 RETURN 'TRUE';
10675
10676 ELSE
10677
10678 RETURN 'FALSE';
10679 END IF;
10680
10681 END is_val_number;
10682
10683 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10684 -------procedure to replace reason ids and unsatisfied message
10685 -------ids in logic text.
10686 -------p_logic_text: is the lce text
10687 -------p_pattern : pattern to search for like '... ' for reason ids
10688 -------p_column : name of the column like reason_id
10689 -------x_logic_text: out parameter contains replaced text
10690 PROCEDURE replace_intl_texts(p_logic_text IN VARCHAR2, p_pattern IN VARCHAR2, p_column IN VARCHAR2, x_logic_text IN OUT NOCOPY VARCHAR2)
10691 IS
10692 v_search_str VARCHAR2(200);
10693 v_replace_str VARCHAR2(200);
10694 v_idx_number NUMBER;
10695 v_rep_idx_no NUMBER;
10696 v_instr PLS_INTEGER;
10697 v_lce_text VARCHAR2(4000);
10698 v_complete_str NUMBER;
10699 v_complete_str1 NUMBER;
10700 v_complete_str2 NUMBER;
10701 v_pattern VARCHAR2(200);
10702 v_lce_text_str VARCHAR2(4000);
10703 v_end_delim_str varchar2(25);
10704
10705 BEGIN
10706 IF (p_logic_text IS NOT NULL) THEN
10707 v_lce_text := p_logic_text;
10708 v_lce_text_str := p_logic_text;
10709 v_instr := INSTR(v_lce_text, p_pattern);
10710 WHILE (v_instr > 0)
10711 LOOP
10712 IF (p_pattern LIKE reasonid) THEN
10713 v_instr := v_instr + 4;
10714 v_pattern := p_pattern;
10715 v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
10716 ELSE -- IF (p_pattern LIKE unmsgid) THEN
10717 v_pattern := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr, 5)));
10718 v_pattern := v_pattern || ' ';
10719 v_instr := v_instr + 5;
10720 v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
10721 END IF;
10722
10723 v_complete_str1 := INSTR(v_lce_text, ' ');
10724 v_complete_str2 := INSTR(v_lce_text, pbnewline);
10725
10726 IF v_complete_str2 > 0 AND v_complete_str1 > 0 THEN
10727 v_complete_str := LEAST(v_complete_str1, v_complete_str2) - 1;
10728 IF v_complete_str1 > v_complete_str2 THEN
10729 v_end_delim_str := pbnewline;
10730 ELSE
10731 v_end_delim_str := ' ';
10732 END IF;
10733 ELSIF v_complete_str2 > 0 AND v_complete_str1 = 0 THEN
10734 v_complete_str := v_complete_str2 - 1;
10735 v_end_delim_str:= pbnewline;
10736 ELSIF v_complete_str2 = 0 AND v_complete_str1 > 0 THEN
10737 v_complete_str := v_complete_str1 - 1;
10738 v_end_delim_str:= ' ';
10739 ELSE -- v_complete_str2 = 0) AND(v_complete_str1 = 0
10740 v_complete_str := LENGTH(v_lce_text);
10741 v_end_delim_str := NULL;
10742 END IF;
10743
10744 v_search_str := NULL;
10745 v_search_str := LTRIM(RTRIM(SUBSTR(v_lce_text, 1, v_complete_str)));
10746
10747 IF (is_number(v_search_str)) THEN
10748 v_idx_number := TO_NUMBER(v_search_str);
10749 BEGIN
10750 v_rep_idx_no := cz_pb_mgr.v_cz_intl_text_idx_ref(v_idx_number);
10751 EXCEPTION
10752 WHEN NO_DATA_FOUND THEN
10753 CZ_PB_MGR.v_err_message := 'Failure in resolving '||p_column||': '||v_search_str;
10754 CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LCETEXTS',SQLCODE);
10755 RAISE;
10756 END;
10757
10758 IF v_end_delim_str IS NULL THEN
10759 v_lce_text_str := substr(v_lce_text_str, 1, length(v_lce_text_str)-v_complete_str) || to_char(v_rep_idx_no);
10760 ELSE
10761 v_search_str := v_pattern || TO_CHAR(v_idx_number) || v_end_delim_str;
10762 v_replace_str := v_pattern || TO_CHAR(v_rep_idx_no) || v_end_delim_str;
10763 v_lce_text_str := REPLACE(v_lce_text_str, v_search_str, v_replace_str);
10764 END IF;
10765 END IF;
10766
10767 v_instr := INSTR(v_lce_text, p_pattern);
10768 END LOOP;
10769 END IF;
10770
10771 x_logic_text := v_lce_text_str;
10772 EXCEPTION
10773 WHEN OTHERS THEN
10774 cz_pb_mgr.v_err_message := 'Error during replacing ' || p_column || ' : ' || SQLERRM;
10775 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10776 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10777 RAISE;
10778 END replace_intl_texts;
10779
10780 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
10781 PROCEDURE insert_lce_load_specs(
10782 p_specs_attach_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10783 ,p_specs_lce_header_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10784 ,p_specs_required_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10785 ,p_specs_attach_comp_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10786 ,p_specs_model_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10787 ,p_specs_net_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10788 ,p_alias_name_ref IN OUT NOCOPY cz_pb_mgr.t_alias_name
10789 ,x_status IN OUT NOCOPY VARCHAR2
10790 )
10791 AS
10792 BEGIN
10793 IF (x_status <> PUBLICATION_ERROR)
10794 THEN
10795 IF (p_specs_model_id_ref.COUNT > 0)
10796 THEN
10797 EXECUTE IMMEDIATE 'BEGIN'
10798 || ' '
10799 || 'IF (cz_pb_mgr.v_specs_attach_expl_id_ref.COUNT > 0) THEN '
10800 || 'FOR I IN cz_pb_mgr.v_specs_attach_expl_id_ref.FIRST..cz_pb_mgr.v_specs_attach_expl_id_ref.LAST'
10801 || ' '
10802 || 'LOOP'
10803 || ' '
10804 || 'INSERT INTO cz_lce_load_specs'
10805 || cz_pb_mgr.v_db_link
10806 || '(ATTACHMENT_EXPL_ID'
10807 || ' '
10808 || ',LCE_HEADER_ID'
10809 || ' '
10810 || ',REQUIRED_EXPL_ID'
10811 || ' '
10812 || ',ATTACHMENT_COMP_ID'
10813 || ' '
10814 || ',MODEL_ID'
10815 || ' '
10816 || ',NET_TYPE'
10817 || ' '
10818 || ',alias_name'
10819 || ' '
10820 || ',DELETED_FLAG)'
10821 || ' '
10822 || 'values (cz_pb_mgr.v_specs_attach_expl_id_ref(i)'
10823 || ' '
10824 || ',cz_pb_mgr.v_specs_lce_header_id_ref(i)'
10825 || ' '
10826 || ',cz_pb_mgr.v_specs_required_expl_id_ref(i)'
10827 || ' '
10828 || ',cz_pb_mgr.v_specs_attach_comp_id_ref(i)'
10829 || ' '
10830 || ',cz_pb_mgr.v_specs_model_id_ref(i)'
10831 || ' '
10832 || ',cz_pb_mgr.v_specs_net_type_ref(i)'
10833 || ' '
10834 || ',cz_pb_mgr.v_specs_alias_name_ref(i)'
10835 || ' '
10836 || ',''0'''
10837 || ' '
10838 || ');'
10839 || ' '
10840 || 'END LOOP;'
10841 || 'END IF; '
10842 || ' '
10843 || 'END;';
10844
10845 COMMIT;
10846 END IF;
10847 END IF;
10848 EXCEPTION
10849 WHEN OTHERS
10850 THEN
10851 x_status := PUBLICATION_ERROR;
10852 cz_pb_mgr.v_err_message := 'Error during insert of lce_load_specs: ' || SQLERRM;
10853 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10854 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10855 RAISE;
10856 END insert_lce_load_specs;
10857
10858 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10859 --------copy data into cz_lce_headers
10860 PROCEDURE copy_lce_headers
10861 IS
10862 v_cz_lce_comp_id_tbl cz_pb_mgr.t_ref;
10863 v_cz_lce_expl_id_tbl cz_pb_mgr.t_ref;
10864 v_cz_lce_headers_new_tbl cz_pb_mgr.t_ref;
10865 v_cz_lce_headers_old_tbl cz_pb_mgr.t_ref;
10866 v_cz_lce_headers_comp_tbl cz_pb_mgr.t_ref;
10867 v_cz_lce_headers_expl_tbl cz_pb_mgr.t_ref;
10868 v_cz_lce_devl_id_tbl cz_pb_mgr.t_ref;
10869 v_specs_attach_expl_id_tbl cz_pb_mgr.t_ref;
10870 v_specs_lce_header_id_tbl cz_pb_mgr.t_ref;
10871 v_specs_required_expl_id_tbl cz_pb_mgr.t_ref;
10872 v_specs_attach_comp_id_tbl cz_pb_mgr.t_ref;
10873 v_specs_model_id_tbl cz_pb_mgr.t_ref;
10874 v_specs_net_type_tbl cz_pb_mgr.t_ref;
10875 plsql_table_list cz_pb_mgr.col_plsql_table_list;
10876 v_specs_alias_name_tbl cz_pb_mgr.t_alias_name;
10877 rec_count NUMBER := 0;
10878 resolution_status VARCHAR2(200);
10879 BEGIN
10880 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10881 THEN
10882 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
10883 THEN
10884 cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
10885 cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
10886 cz_pb_mgr.v_cz_lce_headers_idx_ref.DELETE;
10887 cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
10888 cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
10889 cz_pb_mgr.v_cz_lce_devl_id_ref.DELETE;
10890
10891 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10892 LOOP
10893 cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
10894 cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
10895 v_cz_lce_comp_id_tbl.DELETE;
10896 v_cz_lce_expl_id_tbl.DELETE;
10897
10898 BEGIN
10899 SELECT cz_pb_mgr.sequence_generate(cz_lce_headers_seq
10900 , 'cz_lce_headers_s.nextval' || cz_pb_mgr.v_db_link
10901 ,cz_pb_mgr.v_oraclesequenceincr
10902 )
10903 ,lce_header_id, component_id, model_ref_expl_id, devl_project_id
10904 BULK COLLECT INTO cz_pb_mgr.v_cz_lce_headers_new_tbl
10905 ,cz_pb_mgr.v_cz_lce_headers_old_tbl, v_cz_lce_comp_id_tbl, v_cz_lce_expl_id_tbl, v_cz_lce_devl_id_tbl
10906 FROM cz_lce_headers
10907 WHERE cz_lce_headers.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_lce_headers.deleted_flag = record_not_deleted;
10908 EXCEPTION
10909 WHEN NO_DATA_FOUND
10910 THEN
10911 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
10912 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10913 WHEN OTHERS
10914 THEN
10915 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
10916 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10917 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10918 END;
10919
10920 rec_count := cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT;
10921
10922 IF (cz_pb_mgr.v_cz_lce_headers_new_tbl.COUNT > 0)
10923 THEN
10924 FOR k IN cz_pb_mgr.v_cz_lce_headers_new_tbl.FIRST .. cz_pb_mgr.v_cz_lce_headers_new_tbl.LAST
10925 LOOP
10926 rec_count := rec_count + 1;
10927 cz_pb_mgr.v_cz_lce_headers_new_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_new_tbl(k);
10928 cz_pb_mgr.v_cz_lce_headers_old_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_old_tbl(k);
10929 cz_pb_mgr.v_cz_lce_headers_idx_ref(cz_pb_mgr.v_cz_lce_headers_old_tbl(k)):=cz_pb_mgr.v_cz_lce_headers_new_tbl(k);
10930 cz_pb_mgr.v_cz_lce_comp_id_ref(rec_count) := v_cz_lce_comp_id_tbl(k);
10931 cz_pb_mgr.v_cz_lce_expl_id_ref(rec_count) := v_cz_lce_expl_id_tbl(k);
10932 cz_pb_mgr.v_cz_lce_devl_id_ref(rec_count) := v_cz_lce_devl_id_tbl(k);
10933 END LOOP;
10934 END IF;
10935 END LOOP;
10936 END IF;
10937
10938 IF (cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT > 0)
10939 THEN
10940 ------resolve component ids of cz lce headers
10941 resolve_ids(cz_pb_mgr.v_cz_lce_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component ids of lce headers');
10942 -------resolve model ref expl id
10943 resolve_ids(cz_pb_mgr.v_cz_lce_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of lce headers');
10944 -------resolve model ref expl id
10945 resolve_ids(cz_pb_mgr.v_cz_lce_devl_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl proj id of lce headers');
10946 ------------insert into cz lce headers
10947 plsql_table_list.DELETE;
10948 rec_count := 1;
10949 plsql_table_list(rec_count).col_name := 'lce_header_id';
10950 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_headers_new_ref';
10951 rec_count := rec_count + 1;
10952 plsql_table_list(rec_count).col_name := 'component_id';
10953 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_comp_id_ref';
10954 rec_count := rec_count + 1;
10955 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
10956 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_expl_id_ref';
10957 rec_count := rec_count + 1;
10958 plsql_table_list(rec_count).col_name := 'devl_project_id';
10959 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_devl_id_ref';
10960 insert_into_table('cz_lce_headers'
10961 ,'lce_header_id'
10962 ,cz_pb_mgr.v_db_link
10963 ,plsql_table_list
10964 ,'cz_pb_mgr.v_cz_lce_headers_old_ref'
10965 ,cz_pb_mgr.v_cz_lce_headers_old_ref
10966 );
10967 ------insert data into cz_lce_load_specs
10968 clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
10969 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
10970 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10971 LOOP
10972 BEGIN
10973 v_specs_attach_expl_id_tbl.DELETE;
10974 v_specs_lce_header_id_tbl.DELETE;
10975 v_specs_required_expl_id_tbl.DELETE;
10976 v_specs_attach_comp_id_tbl.DELETE;
10977 v_specs_model_id_tbl.DELETE;
10978 v_specs_net_type_tbl.DELETE;
10979 v_specs_alias_name_tbl.DELETE;
10980
10981 SELECT attachment_expl_id, lce_header_id, required_expl_id, attachment_comp_id
10982 ,model_id, net_type, alias_name
10983 BULK COLLECT INTO v_specs_attach_expl_id_tbl, v_specs_lce_header_id_tbl, v_specs_required_expl_id_tbl, v_specs_attach_comp_id_tbl
10984 ,v_specs_model_id_tbl, v_specs_net_type_tbl, v_specs_alias_name_tbl
10985 FROM cz_lce_load_specs
10986 WHERE cz_lce_load_specs.model_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_lce_load_specs.deleted_flag = record_not_deleted;
10987 EXCEPTION
10988 WHEN NO_DATA_FOUND
10989 THEN
10990 NULL;
10991 WHEN OTHERS
10992 THEN
10993 RAISE no_load_specs_data;
10994 END;
10995
10996 rec_count := cz_pb_mgr.v_specs_model_id_ref.COUNT;
10997
10998 IF (v_specs_model_id_tbl.COUNT > 0)
10999 THEN
11000 FOR loadspeccount IN v_specs_model_id_tbl.FIRST .. v_specs_model_id_tbl.LAST
11001 LOOP
11002 rec_count := rec_count + 1;
11003 cz_pb_mgr.v_specs_attach_expl_id_ref(rec_count) := v_specs_attach_expl_id_tbl(loadspeccount);
11004 cz_pb_mgr.v_specs_lce_header_id_ref(rec_count) := v_specs_lce_header_id_tbl(loadspeccount);
11005 cz_pb_mgr.v_specs_required_expl_id_ref(rec_count) := v_specs_required_expl_id_tbl(loadspeccount);
11006 cz_pb_mgr.v_specs_attach_comp_id_ref(rec_count) := v_specs_attach_comp_id_tbl(loadspeccount);
11007 cz_pb_mgr.v_specs_model_id_ref(rec_count) := v_specs_model_id_tbl(loadspeccount);
11008 cz_pb_mgr.v_specs_net_type_ref(rec_count) := v_specs_net_type_tbl(loadspeccount);
11009 cz_pb_mgr.v_specs_alias_name_ref(rec_count) := v_specs_alias_name_tbl(loadspeccount);
11010 END LOOP;
11011 END IF;
11012 END LOOP;
11013 END IF;
11014
11015 --------resolve attachment expl id
11016 resolve_ids(cz_pb_mgr.v_specs_attach_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'attachment expl id of cz_lce_load_specs');
11017 --------resolve lce_header id
11018 resolve_ids(cz_pb_mgr.v_specs_lce_header_id_ref, cz_pb_mgr.v_cz_lce_headers_idx_ref, 'lce_header_id of cz_lce_load_specs');
11019 --------resolve required expl id
11020 resolve_ids(cz_pb_mgr.v_specs_required_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'required expl id of cz_lce_load_specs');
11021 --------resolve attachment comp id
11022 resolve_ids(cz_pb_mgr.v_specs_attach_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'attachment comp id of cz_lce_load_specs');
11023 --------resolve model id
11024 resolve_ids(cz_pb_mgr.v_specs_model_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'model id of cz_lce_load_specs');
11025 insert_lce_load_specs(cz_pb_mgr.v_specs_attach_expl_id_ref
11026 ,cz_pb_mgr.v_specs_lce_header_id_ref
11027 ,cz_pb_mgr.v_specs_required_expl_id_ref
11028 ,cz_pb_mgr.v_specs_attach_comp_id_ref
11029 ,cz_pb_mgr.v_specs_model_id_ref
11030 ,cz_pb_mgr.v_specs_net_type_ref
11031 ,cz_pb_mgr.v_specs_alias_name_ref
11032 ,cz_pb_mgr.v_status_code
11033 );
11034 v_cz_lce_comp_id_tbl.DELETE;
11035 v_cz_lce_expl_id_tbl.DELETE;
11036 v_cz_lce_devl_id_tbl.DELETE;
11037 v_specs_attach_expl_id_tbl.DELETE;
11038 v_specs_lce_header_id_tbl.DELETE;
11039 v_specs_required_expl_id_tbl.DELETE;
11040 v_specs_attach_comp_id_tbl.DELETE;
11041 v_specs_model_id_tbl.DELETE;
11042 END IF;
11043 END IF; /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
11044 EXCEPTION
11045 WHEN no_load_specs_data
11046 THEN
11047 cz_pb_mgr.v_err_message := 'Error in retrieving data from cz_load_specs';
11048 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCELOADSPECS', SQLCODE);
11049 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11050 RAISE;
11051 WHEN OTHERS
11052 THEN
11053 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
11054 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCEHDRS', SQLCODE);
11055 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11056 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11057 RAISE;
11058 END copy_lce_headers;
11059
11060 -- used only when rules not copied in publication
11061 PROCEDURE get_rule_intl_text_ids(x_text_id_tbl OUT NOCOPY CZ_PB_MGR.t_ref)
11062 IS
11063 l_text_id_tbl CZ_PB_MGR.t_ref;
11064 l_counter PLS_INTEGER := 0;
11065 BEGIN
11066 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
11067 l_text_id_tbl.DELETE;
11068 SELECT intl_text_id BULK COLLECT INTO l_text_id_tbl
11069 FROM cz_intl_texts
11070 WHERE model_id = cz_pb_mgr.v_models_to_be_exported(i)
11071 AND deleted_flag = '0' AND (seeded_flag IS NULL OR seeded_flag = '0')
11072 AND intl_text_id IN (SELECT reason_id
11073 FROM cz_rules
11074 WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
11075 AND deleted_flag = '0' AND reason_id IS NOT NULL
11076 UNION ALL
11077 SELECT unsatisfied_msg_id
11078 FROM cz_rules
11079 WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
11080 AND deleted_flag = '0' AND unsatisfied_msg_id IS NOT NULL);
11081 IF l_text_id_tbl.COUNT > 0 THEN
11082 FOR j IN l_text_id_tbl.FIRST .. l_text_id_tbl.LAST LOOP
11083 l_counter := l_counter + 1;
11084 x_text_id_tbl(l_counter) := l_text_id_tbl(j);
11085 END LOOP;
11086 END IF;
11087 END LOOP;
11088 END get_rule_intl_text_ids;
11089
11090 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11091 ---------procedure to copy data into cz_lce_texts
11092 ---------reason ids and unsatisfied message ids of cz rules
11093 ---------are copied and resolved in this procedure
11094 ---------
11095 PROCEDURE copy_lce_texts(p_copy_rules_flag IN VARCHAR2)
11096 IS
11097 TYPE lce_text_ref IS TABLE OF VARCHAR2(4000)
11098 INDEX BY BINARY_INTEGER;
11099
11100 v_text_hdr_ref cz_pb_mgr.t_ref;
11101 v_text_seq_ref cz_pb_mgr.t_ref;
11102 v_lce_text_ref lce_text_ref;
11103 v_text_hdr_tbl cz_pb_mgr.t_ref;
11104 v_text_seq_tbl cz_pb_mgr.t_ref;
11105 v_lce_text_tbl cz_pb_mgr.lcetexttype;
11106 v_text_hdr_new_ref cz_pb_mgr.t_ref;
11107 v_text_seq_new_ref cz_pb_mgr.t_ref;
11108 v_lce_text_new_ref cz_pb_mgr.lcetexttype;
11109 record_count PLS_INTEGER;
11110 seq_nbr PLS_INTEGER;
11111 return_position PLS_INTEGER;
11112 rec_count NUMBER;
11113 l_text_id_tbl CZ_PB_MGR.t_ref;
11114 BEGIN
11115 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
11116 THEN
11117 IF (cz_pb_mgr.v_cz_lce_headers_old_ref.COUNT > 0)
11118 THEN
11119 v_text_hdr_ref.DELETE;
11120 v_text_seq_ref.DELETE;
11121 v_lce_text_ref.DELETE;
11122
11123 FOR i IN cz_pb_mgr.v_cz_lce_headers_old_ref.FIRST .. cz_pb_mgr.v_cz_lce_headers_old_ref.LAST
11124 LOOP
11125 BEGIN
11126 v_text_hdr_tbl.DELETE;
11127 v_text_seq_tbl.DELETE;
11128 v_lce_text_tbl.DELETE;
11129
11130 SELECT lce_header_id, seq_nbr, lce_text
11131 BULK COLLECT INTO v_text_hdr_tbl, v_text_seq_tbl, v_lce_text_tbl
11132 FROM cz_lce_texts
11133 WHERE cz_lce_texts.lce_header_id = cz_pb_mgr.v_cz_lce_headers_old_ref(i)
11134 ORDER BY lce_header_id, seq_nbr;
11135 EXCEPTION
11136 WHEN NO_DATA_FOUND
11137 THEN
11138 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11139 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11140 WHEN OTHERS
11141 THEN
11142 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11143 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11144 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11145 END;
11146
11147 rec_count := v_text_hdr_ref.COUNT;
11148
11149 IF (v_text_hdr_tbl.COUNT > 0)
11150 THEN
11151 FOR j IN v_text_hdr_tbl.FIRST .. v_text_hdr_tbl.LAST
11152 LOOP
11153 rec_count := rec_count + 1;
11154 v_text_hdr_ref(rec_count) := v_text_hdr_tbl(j);
11155 v_text_seq_ref(rec_count) := v_text_seq_tbl(j);
11156 v_lce_text_ref(rec_count) := v_lce_text_tbl(j);
11157 END LOOP;
11158 END IF;
11159 END LOOP;
11160 END IF;
11161
11162 IF (v_text_hdr_ref.COUNT > 0)
11163 THEN
11164 -------------Resolving lce header id
11165 resolve_ids(v_text_hdr_ref, cz_pb_mgr.v_cz_lce_headers_idx_ref, 'lce header id of cz lce texts');
11166 END IF;
11167
11168 -------replace reason ids in lce text
11169 IF (v_lce_text_ref.COUNT > 0) THEN
11170 -- insert intl text records and populate text id lookup map if rules are not copied in publication
11171 IF UPPER(NVL(p_copy_rules_flag, 'YES')) <> 'YES' THEN
11172 get_rule_intl_text_ids(l_text_id_tbl);
11173 insert_intl_texts(l_text_id_tbl,'Reason and unsatisfied msg ids of rules');
11174 END IF;
11175
11176 FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
11177 LOOP
11178 replace_intl_texts(v_lce_text_ref(j), reasonid, 'REASONID', v_lce_text_ref(j));
11179 END LOOP;
11180 END IF;
11181
11182 ----replace unsatisfied message ids
11183 IF (v_lce_text_ref.COUNT > 0)
11184 THEN
11185 FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
11186 LOOP
11187 replace_intl_texts(v_lce_text_ref(j), unmsgid, 'UNSATMSGID', v_lce_text_ref(j));
11188 END LOOP;
11189 END IF;
11190
11191 IF (v_text_hdr_ref.COUNT > 0)
11192 THEN
11193 record_count := 0;
11194 seq_nbr := 0;
11195
11196 FOR i IN v_text_hdr_ref.FIRST .. v_text_hdr_ref.LAST
11197 LOOP
11198 record_count := record_count + 1;
11199 seq_nbr := seq_nbr + 1;
11200
11201 IF (v_text_seq_ref(i) = 1)
11202 THEN
11203 seq_nbr := 1;
11204 END IF;
11205
11206 IF (LENGTH(v_lce_text_ref(i)) > 2000)
11207 THEN
11208 v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
11209 v_text_seq_new_ref(record_count) := seq_nbr;
11210 v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, 2000);
11211 return_position := INSTR(v_lce_text_new_ref(record_count), pbnewline, -1);
11212 v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, return_position);
11213 record_count := record_count + 1;
11214 seq_nbr := seq_nbr + 1;
11215 v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
11216 v_text_seq_new_ref(record_count) := seq_nbr;
11217 v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), return_position + 1);
11218 ELSE
11219 v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
11220 v_text_seq_new_ref(record_count) := seq_nbr;
11221 v_lce_text_new_ref(record_count) := v_lce_text_ref(i);
11222 END IF;
11223 END LOOP;
11224 END IF;
11225
11226 IF (v_text_hdr_new_ref.COUNT > 0)
11227 THEN
11228 FOR i IN v_text_hdr_new_ref.FIRST .. v_text_hdr_new_ref.LAST
11229 LOOP
11230 BEGIN
11231 EXECUTE IMMEDIATE 'INSERT INTO cz_lce_texts'
11232 || cz_pb_mgr.v_db_link
11233 || '( LCE_HEADER_ID'
11234 || ' '
11235 || ',SEQ_NBR'
11236 || ' '
11237 || ',LCE_TEXT'
11238 || ' '
11239 || ')'
11240 || ' '
11241 || 'VALUES (:1,:2,:3)'
11242 USING v_text_hdr_new_ref(i), v_text_seq_new_ref(i), v_lce_text_new_ref(i);
11243
11244 COMMIT;
11245 EXCEPTION
11246 WHEN OTHERS
11247 THEN
11248 ROLLBACK;
11249 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11250 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
11251 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11252 END;
11253 END LOOP;
11254
11255 COMMIT;
11256 END IF;
11257
11258 v_text_hdr_ref.DELETE;
11259 v_text_seq_ref.DELETE;
11260 v_lce_text_ref.DELETE;
11261 v_text_hdr_tbl.DELETE;
11262 v_text_seq_tbl.DELETE;
11263 v_lce_text_tbl.DELETE;
11264 END IF; /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
11265 EXCEPTION
11266 WHEN OTHERS
11267 THEN
11268 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
11269 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCETEXTS', SQLCODE);
11270 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11271 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11272 RAISE;
11273 END;
11274
11275 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11276 ---------the installed or base languages on the source and the target instance
11277 ---------must be the same.
11278 PROCEDURE pb_language_check
11279 IS
11280 lang_cv ref_cursor;
11281 lang_index NUMBER := 0.0;
11282 BEGIN
11283 cz_pb_mgr.v_src_lang_code_tbl.DELETE;
11284
11285 BEGIN
11286 SELECT UPPER(language_code)
11287 BULK COLLECT INTO cz_pb_mgr.v_src_lang_code_tbl
11288 FROM fnd_languages
11289 WHERE fnd_languages.installed_flag IN('B', 'I')
11290 ORDER BY UPPER(language_code);
11291 EXCEPTION
11292 WHEN OTHERS
11293 THEN
11294 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
11295 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11296 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11297 cz_pb_mgr.global_export_retcode := 2;
11298 END;
11299
11300 cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
11301
11302 BEGIN
11303 OPEN lang_cv FOR 'SELECT UPPER(language_code)'
11304 || ' '
11305 || 'FROM fnd_languages'
11306 || cz_pb_mgr.v_db_link
11307 || ' '
11308 || 'WHERE fnd_languages.installed_flag IN (''B'', ''I'')'
11309 || ' '
11310 || 'ORDER BY UPPER(language_code)';
11311
11312 lang_index := 1;
11313
11314 LOOP
11315 FETCH lang_cv
11316 INTO cz_pb_mgr.v_tgt_lang_code_tbl(lang_index);
11317
11318 EXIT WHEN lang_cv%NOTFOUND;
11319 lang_index := lang_index + 1;
11320 END LOOP;
11321 EXCEPTION
11322 WHEN OTHERS
11323 THEN
11324 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
11325 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11326 cz_pb_mgr.v_status_code := 'ERR';
11327 cz_pb_mgr.global_export_retcode := 2;
11328 END;
11329
11330 IF ( (cz_pb_mgr.v_src_lang_code_tbl.COUNT > 0)
11331 AND (cz_pb_mgr.v_tgt_lang_code_tbl.COUNT > 0)
11332 AND (cz_pb_mgr.v_src_lang_code_tbl.COUNT = cz_pb_mgr.v_tgt_lang_code_tbl.COUNT)
11333 )
11334 THEN
11335 FOR l IN cz_pb_mgr.v_src_lang_code_tbl.FIRST .. cz_pb_mgr.v_src_lang_code_tbl.LAST
11336 LOOP
11337 IF (cz_pb_mgr.v_src_lang_code_tbl(l) <> cz_pb_mgr.v_tgt_lang_code_tbl(l))
11338 THEN
11339 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SRC_TGT_LANG', 'LANGUAGE', cz_pb_mgr.v_tgt_lang_code_tbl(l));
11340 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11341 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11342 cz_pb_mgr.global_export_retcode := 2;
11343 END IF;
11344 END LOOP;
11345 ELSE
11346 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
11347 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
11348 cz_pb_mgr.v_status_code := 'ERR';
11349 cz_pb_mgr.global_export_retcode := 2;
11350 END IF;
11351
11352 cz_pb_mgr.v_src_lang_code_tbl.DELETE;
11353 cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
11354 END pb_language_check;
11355 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11356 -----procedure to fix bug# 2759486 When copies of models exist
11357 -----there could be many projects with the same persistent_node_id
11358 -----So we need persistent_node_id and its associated project for resolving child_model_expl_id
11359 -----of model ref expls.
11360 PROCEDURE get_pers_prj_id(
11361 p_ref_node IN cz_ps_nodes.ps_node_id%TYPE
11362 ,x_pers_node_id OUT NOCOPY cz_ps_nodes.ps_node_id%TYPE
11363 ,x_prj_id OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
11364 )
11365 IS
11366 BEGIN
11367 SELECT persistent_node_id, devl_project_id
11368 INTO x_pers_node_id, x_prj_id
11369 FROM cz_ps_nodes t
11370 WHERE t.ps_node_id = p_ref_node AND t.deleted_flag = '0';
11371 EXCEPTION
11372 WHEN OTHERS
11373 THEN
11374 cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ref_node;
11375 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.get_pers_prj_id', SQLCODE);
11376 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11377 RAISE;
11378 END;
11379
11380 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11381 -------procedure retrieves the project id of a ps node
11382 PROCEDURE get_devl_project_id(
11383 p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
11384 ,x_devl_project_id IN OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
11385 ,x_status IN OUT NOCOPY VARCHAR2
11386 )
11387 AS
11388 BEGIN
11389 IF (x_status <> PUBLICATION_ERROR)
11390 THEN
11391 SELECT devl_project_id
11392 INTO x_devl_project_id
11393 FROM cz_ps_nodes
11394 WHERE cz_ps_nodes.ps_node_id = p_ps_node_id AND cz_ps_nodes.deleted_flag = '0';
11395 END IF;
11396 EXCEPTION
11397 WHEN OTHERS
11398 THEN
11399 cz_pb_mgr.v_err_message := 'Error in retrieving devl proj id from cz ps nodes for ps node id: ' || p_ps_node_id || ' : ' || SQLERRM;
11400 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
11401 x_status := PUBLICATION_ERROR;
11402 RAISE;
11403 END;
11404
11405 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11406 -------procedure that retrieves persistent node id
11407 PROCEDURE get_persistent_node_id(
11408 p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
11409 ,x_persistent_id IN OUT NOCOPY cz_ps_nodes.persistent_node_id%TYPE
11410 ,x_status IN OUT NOCOPY VARCHAR2
11411 )
11412 AS
11413 BEGIN
11414 IF (x_status <> PUBLICATION_ERROR)
11415 THEN
11416 SELECT persistent_node_id
11417 INTO x_persistent_id
11418 FROM cz_ps_nodes t
11419 WHERE t.ps_node_id = p_ps_node_id AND t.deleted_flag = '0';
11420 END IF;
11421 EXCEPTION
11422 WHEN OTHERS
11423 THEN
11424 cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ps_node_id;
11425 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
11426 x_status := PUBLICATION_ERROR;
11427 RAISE;
11428 END;
11429
11430 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11431 -------procedure retrieves the component id
11432 PROCEDURE remote_component_id(
11433 p_resolved_key_value IN OUT NOCOPY NUMBER
11434 ,p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
11435 ,p_server_id IN cz_servers.server_local_id%TYPE
11436 ,x_status IN OUT NOCOPY VARCHAR2
11437 )
11438 AS
11439 BEGIN
11440 IF (x_status <> PUBLICATION_ERROR)
11441 THEN
11442 IF (p_model_not_exported_array.COUNT > 0)
11443 THEN
11444 FOR j IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
11445 LOOP
11446 IF (p_resolved_key_value = p_model_not_exported_array(j)) THEN
11447 get_remote_model_id(p_server_id, p_resolved_key_value, x_status, p_resolved_key_value);
11448 EXIT;
11449 END IF;
11450 END LOOP;
11451 END IF;
11452 END IF;
11453 EXCEPTION
11454 WHEN OTHERS
11455 THEN
11456 cz_pb_mgr.v_err_message := 'Error in retrieving remote component from pb model exports: ' || SQLERRM;
11457 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
11458 x_status := PUBLICATION_ERROR;
11459 RAISE;
11460 END;
11461
11462 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11463 -------procedure that resolves remote reference nodes
11464 PROCEDURE resolve_ref_ids_not_found(
11465 p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
11466 ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
11467 ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
11468 ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
11469 ,p_column_name IN VARCHAR2
11470 ,x_status IN OUT NOCOPY VARCHAR2
11471 )
11472 AS
11473 ref_node_found BOOLEAN := FALSE;
11474 v_node_id NUMBER := 0.0;
11475 child_ref_id_cv ref_cursor;
11476 v_ref_project cz_devl_projects.devl_project_id%TYPE;
11477 v_ref_remote_model cz_devl_projects.devl_project_id%TYPE;
11478 v_child_expl_id cz_model_ref_expls.model_ref_expl_id%TYPE;
11479 v_persistent_node_id cz_ps_nodes.persistent_node_id%TYPE;
11480 v_source_child_model cz_model_ref_expls.model_id%TYPE;
11481 v_child_ref_node cz_ps_nodes.ps_node_id%TYPE;
11482 v_ref_model_id cz_model_ref_expls.model_id%TYPE;
11483 BEGIN
11484 IF (x_status <> PUBLICATION_ERROR)
11485 THEN
11486 IF (p_master_keys_array.COUNT > 0)
11487 THEN
11488 FOR i IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
11489 LOOP
11490 ref_node_found := FALSE;
11491
11492 IF (p_resolved_key_array(i) IS NOT NULL)
11493 THEN
11494 BEGIN
11495 p_resolved_key_array(i) := p_resolving_key_new_idx_array(p_resolved_key_array(i));
11496 ref_node_found := TRUE;
11497 EXCEPTION
11498 WHEN NO_DATA_FOUND
11499 THEN
11500 ref_node_found := FALSE;
11501 WHEN OTHERS
11502 THEN
11503 RAISE;
11504 END;
11505
11506 v_node_id := p_resolved_key_array(i);
11507 v_ref_project := 0;
11508 v_source_child_model := 0;
11509 v_child_ref_node := 0;
11510 v_persistent_node_id := 0;
11511 v_ref_model_id := 0;
11512
11513 IF (NOT ref_node_found)
11514 THEN
11515 IF (p_column_name = 'cz_model_ref_expl.referring_node_id')
11516 THEN
11517 get_devl_project_id(p_resolved_key_array(i), v_ref_project, cz_pb_mgr.v_status_code);
11518 get_remote_model_id(cz_pb_mgr.v_server_id, v_ref_project, cz_pb_mgr.v_status_code, v_ref_remote_model);
11519
11520 IF ((v_ref_project IS NOT NULL) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
11521 THEN
11522 OPEN child_ref_id_cv FOR 'SELECT model_ref_expl_id FROM cz_model_ref_expls'
11523 || cz_pb_mgr.v_db_link
11524 || ' t'
11525 || ' '
11526 || 'WHERE t.model_id = '
11527 || TO_CHAR(v_ref_remote_model)
11528 || ' '
11529 || 'AND node_depth = 0 ';
11530
11531 LOOP
11532 FETCH child_ref_id_cv
11533 INTO v_child_expl_id;
11534
11535 EXIT WHEN child_ref_id_cv%NOTFOUND;
11536 END LOOP;
11537
11538 CLOSE child_ref_id_cv;
11539
11540 OPEN child_ref_id_cv FOR 'SELECT model_id'
11541 || ' '
11542 || 'FROM cz_model_ref_expls'
11543 || cz_pb_mgr.v_db_link
11544 || ' t'
11545 || ' '
11546 || 'WHERE t.model_ref_expl_id = '
11547 || TO_CHAR(v_child_expl_id)
11548 || ' '
11549 || 'AND t.deleted_flag = ''0'' ';
11550
11551 LOOP
11552 FETCH child_ref_id_cv
11553 INTO v_ref_model_id;
11554
11555 EXIT WHEN child_ref_id_cv%NOTFOUND;
11556 END LOOP;
11557
11558 CLOSE child_ref_id_cv;
11559
11560 get_persistent_node_id(p_resolved_key_array(i), v_persistent_node_id, cz_pb_mgr.v_status_code);
11561
11562 OPEN child_ref_id_cv FOR 'SELECT ps_node_id FROM cz_ps_nodes'
11563 || cz_pb_mgr.v_db_link
11564 || ' t'
11565 || ' '
11566 || 'WHERE t.persistent_node_id = '
11567 || TO_CHAR(v_persistent_node_id)
11568 || ' '
11569 || 'AND t.devl_project_id = '
11570 || TO_CHAR(v_ref_model_id)
11571 || ' '
11572 || 'AND t.deleted_flag = ''0'' ';
11573
11574 LOOP
11575 FETCH child_ref_id_cv
11576 INTO p_resolved_key_array(i);
11577
11578 EXIT WHEN child_ref_id_cv%NOTFOUND;
11579 END LOOP;
11580
11581 CLOSE child_ref_id_cv;
11582 END IF;
11583 ELSIF(p_column_name = 'cz_model_ref_expl.child_expl_id')
11584 THEN
11585 IF cz_pb_mgr.v_session_parameter<>model_copy THEN
11586 BEGIN
11587 SELECT model_id, referring_node_id
11588 INTO v_source_child_model, v_child_ref_node
11589 FROM cz_model_ref_expls
11590 WHERE cz_model_ref_expls.model_ref_expl_id = p_resolved_key_array(i) AND cz_model_ref_expls.deleted_flag = '0';
11591 EXCEPTION
11592 WHEN OTHERS
11593 THEN
11594 v_child_ref_node := NULL;
11595 END;
11596
11597 IF (v_child_ref_node IS NOT NULL)
11598 THEN
11599 get_pers_prj_id(v_child_ref_node, v_persistent_node_id, v_source_child_model);
11600 get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
11601
11602 BEGIN
11603 OPEN child_ref_id_cv FOR 'SELECT ps_node_id'
11604 || ' '
11605 || 'FROM cz_ps_nodes'
11606 || cz_pb_mgr.v_db_link
11607 || ' t'
11608 || ' '
11609 || 'WHERE t.persistent_node_id = '
11610 || TO_CHAR(v_persistent_node_id)
11611 || ' '
11612 || 'AND t.devl_project_id = '
11613 || TO_CHAR(v_ref_remote_model)
11614 || ' '
11615 || 'AND t.deleted_flag = ''0'' ';
11616
11617 LOOP
11618 FETCH child_ref_id_cv
11619 INTO v_child_ref_node;
11620
11621 EXIT WHEN child_ref_id_cv%NOTFOUND;
11622 END LOOP;
11623
11624 CLOSE child_ref_id_cv;
11625 EXCEPTION
11626 WHEN NO_DATA_FOUND
11627 THEN
11628 cz_pb_mgr.v_err_message :=
11629 'NO remote referring node id found for model :' || v_ref_remote_model || ' on server : ' || cz_pb_mgr.v_server_id;
11630 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODREF', SQLCODE);
11631
11632 CLOSE child_ref_id_cv;
11633 WHEN OTHERS
11634 THEN
11635 CLOSE child_ref_id_cv;
11636 END;
11637 ELSE
11638 get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
11639 END IF;
11640
11641 IF ((v_child_ref_node > 0) AND(v_source_child_model > 0) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
11642 THEN
11643 BEGIN
11644 OPEN child_ref_id_cv FOR 'SELECT model_ref_expl_id'
11645 || ' '
11646 || 'FROM cz_model_ref_expls'
11647 || cz_pb_mgr.v_db_link
11648 || ' t'
11649 || ' '
11650 || 'WHERE t.model_id = '
11651 || TO_CHAR(v_ref_remote_model)
11652 || ' '
11653 || 'AND t.referring_node_id = '
11654 || TO_CHAR(v_child_ref_node);
11655
11656 LOOP
11657 FETCH child_ref_id_cv
11658 INTO p_resolved_key_array(i);
11659
11660 EXIT WHEN child_ref_id_cv%NOTFOUND;
11661 END LOOP;
11662
11663 CLOSE child_ref_id_cv;
11664 EXCEPTION
11665 WHEN OTHERS
11666 THEN
11667 CLOSE child_ref_id_cv;
11668 END;
11669 ELSE
11670 BEGIN
11671 OPEN child_ref_id_cv FOR 'SELECT model_ref_expl_id'
11672 || ' '
11673 || 'FROM cz_model_ref_expls'
11674 || cz_pb_mgr.v_db_link
11675 || ' t'
11676 || ' '
11677 || 'WHERE t.model_id = '
11678 || TO_CHAR(v_ref_remote_model)
11679 || ' '
11680 || 'AND t.node_depth = 0';
11681
11682 LOOP
11683 FETCH child_ref_id_cv
11684 INTO p_resolved_key_array(i);
11685
11686 EXIT WHEN child_ref_id_cv%NOTFOUND;
11687 END LOOP;
11688
11689 CLOSE child_ref_id_cv;
11690 EXCEPTION
11691 WHEN OTHERS
11692 THEN
11693 CLOSE child_ref_id_cv;
11694 END;
11695 END IF;
11696 END IF;
11697 ELSIF(p_column_name = 'cz_model_ref_expl.component_id')
11698 THEN
11699 remote_component_id(p_resolved_key_array(i)
11700 ,cz_pb_mgr.v_models_not_to_be_exported
11701 ,cz_pb_mgr.v_server_id
11702 ,cz_pb_mgr.v_status_code
11703 );
11704 ELSIF(p_column_name IN
11705 ('cz_ui_nodes.ui_def_ref_id'
11706 ,'cz_ui_refs.ref_ui_def_id'
11707 ,'cz_ui_page_refs.target_ui_def_id'
11708 ,'cz_ui_page_elements.target_page_ui_def_id'
11709 ,'cz_ui_ref_templates.ref_template_ui_def_id'
11710 ,'cz_ui_actions.target_ui_def_id'
11711 )
11712 )
11713 THEN
11714 BEGIN
11715 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
11716 THEN
11717 OPEN child_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'
11718 || cz_pb_mgr.v_db_link
11719 || ' '
11720 || 'WHERE name = (SELECT name FROM cz_ui_defs t'
11721 || ' '
11722 || 'WHERE t.ui_def_id = '
11723 || p_resolved_key_array(i)
11724 || ')'
11725 || ' '
11726 || 'AND devl_project_id = :1'
11727 USING v_ref_remote_model;
11728 LOOP
11729 FETCH child_ref_id_cv
11730 INTO p_resolved_key_array(i);
11731
11732 EXIT WHEN child_ref_id_cv%NOTFOUND;
11733 END LOOP;
11734
11735 CLOSE child_ref_id_cv;
11736 ELSE
11737 OPEN child_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'
11738 || cz_pb_mgr.v_db_link
11739 || ' '
11740 || 'WHERE name = ( SELECT name FROM cz_ui_defs t'
11741 || ' '
11742 || 'WHERE t.ui_def_id = '
11743 || p_resolved_key_array(i)
11744 || ' )'
11745 || ' '
11746 || 'AND devl_project_id = :1'
11747 USING v_ref_remote_model;
11748 LOOP
11749 FETCH child_ref_id_cv
11750 INTO p_resolved_key_array(i);
11751
11752 EXIT WHEN child_ref_id_cv%NOTFOUND;
11753 END LOOP;
11754
11755 CLOSE child_ref_id_cv;
11756 END IF;
11757 EXCEPTION
11758 WHEN OTHERS
11759 THEN
11760 CLOSE child_ref_id_cv;
11761
11762 RAISE;
11763 END;
11764 END IF; /* end if of p_column name */
11765 END IF; /* end if of ref_not_found */
11766 END IF; /* end if of p_resolved_key_array */
11767 END LOOP; /* end loop of p_master_keys_array */
11768 END IF; /*end if of p_master_keys_array */
11769 END IF; /* end if of x_status */
11770 EXCEPTION
11771 WHEN OTHERS
11772 THEN
11773 cz_pb_mgr.v_err_message := 'Error in resolving : ' || p_column_name || ' for id ' || v_node_id || ' : ' || SQLERRM;
11774 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREFIDS', SQLCODE);
11775 x_status := PUBLICATION_ERROR;
11776 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11777 RAISE;
11778 END;
11779
11780 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11781 ------update reference ids of cz ps nodes of the remote model
11782 ------@p_models_exported -- root model and all its children
11783 ------@x_status --- publication status
11784 ------@p_server_id --- server local is of the target instance
11785 ------@p_new_ps_node_array --- ps node array that contains new values
11786 -- Note: do get_rem_nodes_of_models early, then we can remove this ugly method as well as some other bad ones
11787 PROCEDURE update_remote_reference_ids(
11788 p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11789 ,p_new_ps_node_array IN OUT NOCOPY cz_pb_mgr.t_ref
11790 ,p_server_id IN cz_servers.server_local_id%TYPE
11791 ,x_status IN OUT NOCOPY VARCHAR2
11792 )
11793 AS
11794 l_sql_string VARCHAR2(32000);
11795 l_remote_mode_id NUMBER;
11796 BEGIN
11797 IF (x_status <> PUBLICATION_ERROR)
11798 THEN
11799 IF (p_models_not_exported.COUNT > 0)
11800 THEN
11801 FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11802 LOOP
11803 IF (p_new_ps_node_array.COUNT > 0) THEN
11804 FOR j IN p_new_ps_node_array.FIRST .. p_new_ps_node_array.LAST
11805 LOOP
11806 IF (cz_pb_mgr.v_ps_refid_old_tbl(j) IS NOT NULL)
11807 THEN
11808 get_remote_model_id(p_server_id, p_models_not_exported(i), x_status, l_remote_mode_id);
11809 l_sql_string := 'UPDATE cz_ps_nodes'
11810 || cz_pb_mgr.v_db_link
11811 || ' SET reference_id=:1,component_id=:2'
11812 || ' WHERE deleted_flag=:3 AND ps_node_id=:4 AND reference_id=:5';
11813 EXECUTE IMMEDIATE l_sql_string
11814 USING l_remote_mode_id,l_remote_mode_id,record_not_deleted,p_new_ps_node_array(j),p_models_not_exported(i);
11815 END IF;
11816 END LOOP;
11817 END IF;
11818 END LOOP;
11819
11820 COMMIT WORK;
11821 END IF;
11822 END IF;
11823 EXCEPTION
11824 WHEN OTHERS
11825 THEN
11826 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REF_ID_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
11827 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11828 x_status := PUBLICATION_ERROR;
11829 RAISE;
11830 END;
11831
11832 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11833 --------procedure that resolves the virtual components of explosion records
11834 --------@p_model_ref_expls_ref :explosion array
11835 --------@p_models_not_exported :source models that are not exported
11836 --------@p_server_id :server local id of cz servers of the target instance
11837 --------@x_status :publication_status
11838 PROCEDURE resolve_virtual_components(
11839 p_model_ref_expls_ref IN OUT NOCOPY cz_pb_mgr.t_ref
11840 ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11841 ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
11842 ,x_status IN OUT NOCOPY VARCHAR2
11843 )
11844 AS
11845 rec_count PLS_INTEGER := 0;
11846 v_vrt_comp_id_tbl cz_pb_mgr.t_ref;
11847 v_vrt_comp_id_ref cz_pb_mgr.t_ref;
11848 virt_ref_id_cv ref_cursor;
11849 virt_model_id_cv ref_cursor;
11850 v_vir_remote_model_id NUMBER := 0.0;
11851 v_vir_devl_id NUMBER := 0.0;
11852 v_remote_comp_id NUMBER := 0.0;
11853 v_child_expl_id NUMBER := 0.0;
11854 v_vir_persistent_id cz_ps_nodes.persistent_node_id%TYPE;
11855 v_errored_model_id cz_devl_projects.devl_project_id%TYPE;
11856 BEGIN
11857 IF (x_status <> PUBLICATION_ERROR)
11858 THEN
11859 IF (p_models_not_exported.COUNT > 0)
11860 THEN
11861 v_vrt_comp_id_tbl.DELETE;
11862
11863 FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11864 LOOP
11865 v_errored_model_id := p_models_not_exported(i);
11866
11867 BEGIN
11868 SELECT component_id
11869 BULK COLLECT INTO v_vrt_comp_id_tbl
11870 FROM cz_model_ref_expls
11871 WHERE cz_model_ref_expls.model_id = p_models_not_exported(i)
11872 AND cz_model_ref_expls.virtual_flag = 0
11873 AND (cz_model_ref_expls.ps_node_type = non_virtual_component OR cz_model_ref_expls.ps_node_type = model_connector)
11874 AND cz_model_ref_expls.deleted_flag = record_not_deleted;
11875 EXCEPTION
11876 WHEN NO_DATA_FOUND
11877 THEN
11878 cz_pb_mgr.v_err_message := 'No virtual components in the model : ' || TO_CHAR(p_models_not_exported(i));
11879 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11880 WHEN OTHERS
11881 THEN
11882 cz_pb_mgr.v_err_message :=
11883 'Error in bulk collect of virtual components in the model : ' || TO_CHAR(p_models_not_exported(i)) || ' : '
11884 || SQLERRM;
11885 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11886 RAISE;
11887 END;
11888
11889 IF (v_vrt_comp_id_tbl.COUNT > 0)
11890 THEN
11891 rec_count := v_vrt_comp_id_ref.COUNT;
11892
11893 FOR j IN v_vrt_comp_id_tbl.FIRST .. v_vrt_comp_id_tbl.LAST
11894 LOOP
11895 rec_count := rec_count + 1;
11896 v_vrt_comp_id_ref(rec_count) := v_vrt_comp_id_tbl(j);
11897 END LOOP;
11898 END IF;
11899 END LOOP;
11900 END IF;
11901
11902 v_vir_persistent_id := 0;
11903 v_vir_devl_id := 0;
11904
11905 IF (v_vrt_comp_id_ref.COUNT > 0)
11906 THEN
11907 FOR i IN v_vrt_comp_id_ref.FIRST .. v_vrt_comp_id_ref.LAST
11908 LOOP
11909 BEGIN
11910 SELECT devl_project_id, persistent_node_id
11911 INTO v_vir_devl_id, v_vir_persistent_id
11912 FROM cz_ps_nodes
11913 WHERE ps_node_id = v_vrt_comp_id_ref(i);
11914 EXCEPTION
11915 WHEN OTHERS
11916 THEN
11917 v_vir_devl_id := 0;
11918 v_vir_persistent_id := 0;
11919 END;
11920
11921 v_vir_remote_model_id := 0;
11922
11923 IF (v_vir_devl_id > 0)
11924 THEN
11925 get_remote_model_id(cz_pb_mgr.v_server_id, v_vir_devl_id, cz_pb_mgr.v_status_code, v_vir_remote_model_id);
11926 END IF;
11927
11928 cz_pb_mgr.v_remote_comp_id := 0;
11929
11930 IF (v_vir_remote_model_id > 0)
11931 THEN
11932 BEGIN
11933 OPEN virt_ref_id_cv FOR 'SELECT ps_node_id FROM cz_ps_nodes'
11934 || cz_pb_mgr.v_db_link
11935 || ' t'
11936 || ' '
11937 || 'WHERE t.devl_project_id = '
11938 || v_vir_remote_model_id
11939 || ' '
11940 || 'AND t.persistent_node_id = '
11941 || v_vir_persistent_id
11942 || ' '
11943 || 'AND t.deleted_flag = ''0'' ';
11944
11945 LOOP
11946 FETCH virt_ref_id_cv
11947 INTO v_remote_comp_id;
11948
11949 EXIT WHEN virt_ref_id_cv%NOTFOUND;
11950 END LOOP;
11951
11952 CLOSE virt_ref_id_cv;
11953 EXCEPTION
11954 WHEN OTHERS
11955 THEN
11956 CLOSE virt_ref_id_cv;
11957
11958 RAISE;
11959 END;
11960
11961 cz_pb_mgr.v_child_expl_id := NULL;
11962
11963 IF (v_remote_comp_id > 0)
11964 THEN
11965 BEGIN
11966 OPEN virt_model_id_cv FOR 'SELECT model_ref_expl_id'
11967 || ' '
11968 || 'FROM cz_model_ref_expls'
11969 || cz_pb_mgr.v_db_link
11970 || ' t'
11971 || ' '
11972 || 'WHERE t.model_id = '
11973 || v_vir_remote_model_id
11974 || ' '
11975 || 'AND t.component_id = '
11976 || v_remote_comp_id
11977 || ' '
11978 || 'AND t.deleted_flag = ''0'' ';
11979
11980 LOOP
11981 FETCH virt_model_id_cv
11982 INTO v_child_expl_id;
11983
11984 EXIT WHEN virt_model_id_cv%NOTFOUND;
11985 END LOOP;
11986
11987 CLOSE virt_model_id_cv;
11988 EXCEPTION
11989 WHEN OTHERS
11990 THEN
11991 CLOSE virt_model_id_cv;
11992
11993 RAISE;
11994 END;
11995
11996 IF (p_model_ref_expls_ref.COUNT > 0) THEN
11997 FOR z IN p_model_ref_expls_ref.FIRST .. p_model_ref_expls_ref.LAST
11998 LOOP
11999 EXECUTE IMMEDIATE 'BEGIN '
12000 || ' '
12001 || 'UPDATE cz_model_ref_expls'
12002 || cz_pb_mgr.v_db_link
12003 || ' t'
12004 || ' '
12005 || 'SET t.component_id = '
12006 || v_remote_comp_id
12007 || ' ,'
12008 || ' '
12009 || 't.child_model_expl_id = '
12010 || v_child_expl_id
12011 || ''
12012 || ' '
12013 || 'WHERE t.model_ref_expl_id = '
12014 || p_model_ref_expls_ref(z)
12015 || ''
12016 || ' '
12017 || 'AND t.component_id = '
12018 || v_vrt_comp_id_ref(i)
12019 || ''
12020 || ' '
12021 || 'AND t.deleted_flag = ''0'';'
12022 || ' '
12023 || 'COMMIT;'
12024 || ' '
12025 || 'END;';
12026 END LOOP;
12027 END IF;
12028 END IF; /* end if of cz_pb_mgr.v_remote_comp_id > 0 */
12029 END IF; /* end if of v_vir_remote_model_id > 0 */
12030 END LOOP;
12031
12032 v_vrt_comp_id_tbl.DELETE;
12033 v_vrt_comp_id_ref.DELETE;
12034 END IF; /* end if of v_vrt_comp_id_ref.COUNT > 0 */
12035 END IF; /* end if of x_status <> PUBLICATION_ERROR */
12036 EXCEPTION
12037 WHEN OTHERS
12038 THEN
12039 cz_pb_mgr.v_err_message := 'Error during resolution of non virtual component of source model : ' || v_errored_model_id || ' : ' || SQLERRM;
12040 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEVIRTCOMP', SQLCODE);
12041 x_status := PUBLICATION_ERROR;
12042 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12043 RAISE;
12044 END;
12045
12046
12047 -- Models with no change since the last successful export are not exported. Therefore their UIs
12048 -- are not exported as well. In such a case if a referring UI is exported, then the ids of referred UIs
12049 -- need to be resolved in these referring UIs. For that we need to map all referred UI Id from the
12050 -- source to corresponding remote Ids. This is exactly what this procedure does i.e. tt maps the
12051 -- source ui_def_ids to remote ui_def_ids in the table x_cz_ui_defs_idx_ref
12052 PROCEDURE get_uis_of_mdls_not_exported(p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref,
12053 x_cz_ui_defs_idx_ref IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
12054 p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE,
12055 x_status IN OUT NOCOPY VARCHAR2)
12056 AS
12057
12058 v_ui_defs_tbl cz_pb_mgr.t_ref;
12059
12060 ui_ref_id_cv REF_CURSOR;
12061 v_devl_project_id cz_devl_projects.devl_project_id%TYPE;
12062 v_remote_devl_project_id cz_devl_projects.devl_project_id%TYPE;
12063 v_remote_ui_def_id cz_ui_defs.ui_def_id%TYPE;
12064 v_name cz_ui_defs.name%TYPE;
12065 CANNOT_FIND_REMOTE_UI EXCEPTION;
12066
12067 BEGIN
12068
12069 IF (x_status <> PUBLICATION_ERROR) THEN
12070 IF (p_models_not_exported.COUNT > 0) THEN
12071 -- loop through all model that are not exported during this publishing session
12072 FOR I IN p_models_not_exported.FIRST..p_models_not_exported.LAST
12073 LOOP
12074 v_ui_defs_tbl.DELETE;
12075 v_devl_project_id := p_models_not_exported(i);
12076 get_remote_model_id(p_server_id,v_devl_project_id,x_status,v_remote_devl_project_id);
12077
12078 -- For each of these source models, get all the UIs
12079 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0) THEN
12080 SELECT ui_def_id BULK COLLECT INTO v_ui_defs_tbl
12081 FROM cz_ui_defs
12082 WHERE deleted_flag='0' AND devl_project_id=v_devl_project_id AND ui_style=g_ui_style_jrad;
12083 ELSE
12084 BEGIN
12085 SELECT ui_def_id
12086 BULK
12087 COLLECT
12088 INTO v_ui_defs_tbl
12089 FROM cz_ui_defs
12090 WHERE cz_ui_defs.devl_project_id = v_devl_project_id
12091 AND cz_ui_defs.deleted_flag = RECORD_NOT_DELETED
12092 AND cz_ui_defs.ui_style <> '-1';
12093
12094 EXCEPTION
12095 WHEN NO_DATA_FOUND THEN
12096 cz_pb_mgr.v_err_message := 'No ui_def_ids found for : '||to_char(v_devl_project_id);
12097 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED', SQLCODE);
12098 WHEN OTHERS THEN
12099 RAISE;
12100 END;
12101 END IF;
12102
12103 IF (v_ui_defs_tbl.COUNT > 0) THEN
12104 -- For each source UI, find the corresponding remote UI. We find the corresponding remote
12105 -- UI using the remote devl_project_id and name of the UI
12106 FOR K IN v_ui_defs_tbl.FIRST..v_ui_defs_tbl.LAST
12107 LOOP
12108 BEGIN
12109 SELECT name into v_name
12110 from cz_ui_defs
12111 where ui_def_Id = v_ui_defs_tbl(k)
12112 AND deleted_flag = RECORD_NOT_DELETED;
12113
12114 v_remote_ui_def_id := NULL;
12115 OPEN ui_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'||CZ_PB_MGR.v_db_link ||
12116 ' WHERE name = :1 AND devl_project_id = :2' ||
12117 ' AND deleted_flag = :3'
12118 USING v_name, v_remote_devl_project_id, RECORD_NOT_DELETED;
12119 LOOP
12120 -- There is one problem here. If there is an extra UI on the source model
12121 -- then we wont find it on the remote model. This issue needs to be addressed.
12122 -- For now we just raise a CANNOT_FIND_REMOTE_UI exception in such a case
12123 FETCH ui_ref_id_cv INTO v_remote_ui_def_id;
12124 EXIT WHEN ui_ref_id_cv%NOTFOUND;
12125 END LOOP;
12126
12127 IF ( v_remote_ui_def_id IS NULL ) THEN
12128 cz_pb_mgr.v_err_message := 'Cannot find UI ' || v_name || ' for remote model ' || to_char(v_devl_project_id);
12129 log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED',SQLCODE);
12130 RAISE CANNOT_FIND_REMOTE_UI;
12131 END IF;
12132
12133 CLOSE ui_ref_id_cv;
12134
12135 x_cz_ui_defs_idx_ref(v_ui_defs_tbl(k)) := v_remote_ui_def_id;
12136
12137 EXCEPTION
12138 WHEN OTHERS THEN
12139 CLOSE ui_ref_id_cv;
12140 RAISE;
12141 END;
12142 END LOOP;
12143 END IF;
12144 END LOOP; /* end loop of p_models_not_exported */
12145 END IF; /* end if of p_models_not_exported */
12146 END IF;
12147 END get_uis_of_mdls_not_exported;
12148
12149 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12150 --------Procedure to resolve remote ui nodes of cz_ui_nodes
12151 -- Note for model conversion, v_cz_ui_nodes_new_ref should be empty, otherwise there would be a problem here
12152 PROCEDURE resolve_remote_ui_nodes(
12153 p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref -- v_cz_ui_nodes_new_ref
12154 ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
12155 ,p_resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref -- v_cz_ui_nodes_ui_ref_id_ref
12156 ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
12157 ,x_status IN OUT NOCOPY VARCHAR2
12158 )
12159 AS
12160 v_remote_ui_defs_ref cz_pb_mgr.t_ref;
12161 v_remote_ui_defs_tbl cz_pb_mgr.t_ref;
12162 v_remote_ui_nodes_ref cz_pb_mgr.t_ref;
12163 v_remote_ui_nod_ui_def_ref cz_pb_mgr.t_ref;
12164 v_remote_ui_nodes_tbl cz_pb_mgr.t_ref;
12165 v_remote_ui_nod_ui_def_tbl cz_pb_mgr.t_ref;
12166 v_remote_pers_ui_node_tbl cz_pb_mgr.t_ref;
12167 v_remote_pers_ui_node_ref cz_pb_mgr.t_ref;
12168 ui_def_ref_id_cv ref_cursor;
12169 v_node_ref_proj_id cz_devl_projects.devl_project_id%TYPE;
12170 v_node_ref_export_id cz_pb_model_exports.export_id%TYPE;
12171 v_node_ref_remote_model cz_pb_model_exports.remote_model_id%TYPE;
12172 rec_count NUMBER;
12173
12174 CURSOR l_ui_def_cur (p_ui_def_id NUMBER) IS SELECT name FROM cz_ui_defs b WHERE b.ui_def_id = p_ui_def_id;
12175 l_ui_def_name cz_ui_defs.name%TYPE;
12176
12177 BEGIN
12178 IF (x_status <> PUBLICATION_ERROR)
12179 THEN
12180 IF (p_master_keys_array.COUNT > 0)
12181 THEN
12182 -- same thing already done in get_uis_of_mdls_not_exported!
12183 IF (p_models_not_exported.COUNT > 0)
12184 THEN
12185 v_remote_ui_defs_ref.DELETE;
12186
12187 FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
12188 LOOP
12189 v_remote_ui_defs_tbl.DELETE;
12190
12191 BEGIN
12192 SELECT ui_def_id
12193 BULK COLLECT INTO v_remote_ui_defs_tbl
12194 FROM cz_ui_defs
12195 WHERE cz_ui_defs.devl_project_id = p_models_not_exported(i) AND cz_ui_defs.deleted_flag = record_not_deleted
12196 AND ui_style IN (g_ui_style_dhtml,g_ui_style_applet);
12197 EXCEPTION
12198 WHEN NO_DATA_FOUND
12199 THEN
12200 cz_pb_mgr.v_err_message := 'No ui_def_ref_ids found for : ' || TO_CHAR(cz_pb_mgr.v_models_not_to_be_exported(i));
12201 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREMOTEUINODES', SQLCODE);
12202 WHEN OTHERS
12203 THEN
12204 RAISE;
12205 END;
12206
12207 rec_count := v_remote_ui_defs_ref.COUNT;
12208
12209 IF (v_remote_ui_defs_tbl.COUNT > 0)
12210 THEN
12211 FOR k IN v_remote_ui_defs_tbl.FIRST .. v_remote_ui_defs_tbl.LAST
12212 LOOP
12213 rec_count := rec_count + 1;
12214 v_remote_ui_defs_ref(rec_count) := v_remote_ui_defs_tbl(k);
12215 END LOOP;
12216 END IF;
12217 END LOOP; /* end loop of cz_pb_mgr.v_models_not_to_be_exported */
12218 END IF; /* end if of p_models_not_exported */
12219
12220 IF (v_remote_ui_defs_ref.COUNT > 0)
12221 THEN
12222 v_remote_ui_defs_tbl.DELETE;
12223 v_remote_ui_nodes_ref.DELETE;
12224 v_remote_ui_nod_ui_def_ref.DELETE;
12225
12226 FOR i IN v_remote_ui_defs_ref.FIRST .. v_remote_ui_defs_ref.LAST
12227 LOOP
12228 v_remote_ui_nodes_tbl.DELETE;
12229 v_remote_ui_nod_ui_def_tbl.DELETE;
12230
12231 BEGIN
12232 SELECT ui_node_id, ui_def_id, persistent_ui_node_id
12233 BULK COLLECT INTO v_remote_ui_nodes_tbl, v_remote_ui_nod_ui_def_tbl, v_remote_pers_ui_node_tbl
12234 FROM cz_ui_nodes
12235 WHERE cz_ui_nodes.ui_def_id = v_remote_ui_defs_ref(i) AND cz_ui_nodes.deleted_flag = '0'
12236 ORDER BY cz_ui_nodes.ui_node_id;
12237 EXCEPTION
12238 WHEN NO_DATA_FOUND
12239 THEN
12240 cz_pb_mgr.v_err_message := 'No ui_node_ids found ';
12241 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12242 WHEN OTHERS
12243 THEN
12244 cz_pb_mgr.v_err_message := 'Error in retrieving ui_node_ids for remote ui_node_refs ';
12245 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12246 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12247 END;
12248
12249 IF (v_remote_ui_nodes_tbl.COUNT > 0)
12250 THEN
12251 FOR j IN v_remote_ui_nodes_tbl.FIRST .. v_remote_ui_nodes_tbl.LAST
12252 LOOP
12253 rec_count := v_remote_ui_nodes_ref.COUNT + 1;
12254 v_remote_ui_nodes_ref(rec_count) := v_remote_ui_nodes_tbl(j);
12255 v_remote_ui_nod_ui_def_ref(rec_count) := v_remote_ui_nod_ui_def_tbl(j);
12256 v_remote_pers_ui_node_ref(rec_count) := v_remote_pers_ui_node_tbl(j);
12257 END LOOP;
12258 END IF; /* end if of v_remote_ui_nodes_tbl */
12259 END LOOP; /* end loop of v_remote_ui_defs_ref */
12260 END IF; /* end if of v_remote_ui_defs_ref */
12261
12262 IF (v_remote_ui_nodes_ref.COUNT > 0)
12263 THEN
12264 IF (p_master_keys_array.COUNT > 0) THEN
12265 FOR j IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
12266 LOOP
12267 IF (p_resolved_array(j) IS NOT NULL)
12268 THEN
12269 FOR i IN v_remote_ui_nodes_ref.FIRST .. v_remote_ui_nodes_ref.LAST
12270 LOOP
12271 IF (p_resolved_array(j) = v_remote_ui_nodes_ref(i))
12272 THEN
12273 ---------get devl_project_id
12274 SELECT devl_project_id
12275 INTO v_node_ref_proj_id
12276 FROM cz_ui_defs
12277 WHERE ui_def_id = v_remote_ui_nod_ui_def_ref(i) AND cz_ui_defs.deleted_flag = '0';
12278
12279 get_remote_model_id(p_server_id,v_node_ref_proj_id,x_status,v_node_ref_remote_model);
12280
12281 OPEN l_ui_def_cur(v_remote_ui_nod_ui_def_ref(i));
12282 FETCH l_ui_def_cur INTO l_ui_def_name;
12283 CLOSE l_ui_def_cur;
12284
12285 OPEN ui_def_ref_id_cv FOR 'SELECT ui_node_id'
12286 || ' '
12287 || 'FROM cz_ui_nodes'
12288 || cz_pb_mgr.v_db_link
12289 || ' t'
12290 || ' '
12291 || 'WHERE t.persistent_ui_node_id = :pers_ui_node_id'
12292 || ' '
12293 || 'AND t.ui_def_id = (SELECT ui_def_id'
12294 || ' '
12295 || 'FROM cz_ui_defs'
12296 || cz_pb_mgr.v_db_link
12297 || ' a'
12298 || ' '
12299 || 'WHERE a.name = :ui_def_name'
12300 || ' '
12301 || 'AND a.devl_project_id = :devl_project_id)'
12302 || ' '
12303 || 'AND t.deleted_flag = ''0'''
12304 || ' '
12305 || 'AND ROWNUM < 2 '
12306 USING v_remote_pers_ui_node_ref(i), l_ui_def_name, v_node_ref_remote_model;
12307 LOOP
12308 FETCH ui_def_ref_id_cv
12309 INTO p_resolved_array(j);
12310
12311 EXIT WHEN ui_def_ref_id_cv%NOTFOUND;
12312 END LOOP;
12313
12314 CLOSE ui_def_ref_id_cv;
12315 END IF; /* end if of p_resolved_array(j) = v_remote_ui_nodes_ref(i) */
12316 END LOOP; /* end loop of FOR I IN v_remote_ui_nodes_ref */
12317 END IF; /* end if of p_resolved_array(j) IS NOT NULL */
12318 END LOOP; /* end loop of FOR J IN p_master_keys_array */
12319 END IF;
12320 END IF; /* end if of v_remote_ui_nodes_ref.COUNT > 0 */
12321 END IF; /* end if of (p_master_keys_array.COUNT > 0) */
12322 END IF; /* end if of x_status <> PUBLICATION_ERROR */
12323 EXCEPTION
12324 WHEN NO_DATA_FOUND
12325 THEN
12326 cz_pb_mgr.v_err_message := 'No ui_node_ref_ids found ';
12327 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12328
12329 CLOSE ui_def_ref_id_cv;
12330 WHEN OTHERS
12331 THEN
12332 cz_pb_mgr.v_err_message := 'Error in retrieving ui_nod_ref_ids ';
12333 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
12334
12335 CLOSE ui_def_ref_id_cv;
12336
12337 x_status := PUBLICATION_ERROR;
12338 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12339 RAISE;
12340 END resolve_remote_ui_nodes;
12341
12342 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12343 --------------populate ps nodes pl/sql table with ps node ids from remote server
12344 --------------@p_model_not_exported_array: source models not exported
12345 --------------@p_ps_nodes_single_array : ps nodes single index array
12346 --------------@x_status : publication status parameter
12347 PROCEDURE get_rem_nodes_of_models(
12348 p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
12349 ,p_ps_nodes_single_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
12350 ,x_status IN OUT NOCOPY VARCHAR2
12351 )
12352 AS
12353 remote_ps_count NUMBER;
12354 v_remote_models_tbl cz_pb_mgr.t_ref;
12355 v_rem_ps_nodes_ref cz_pb_mgr.t_ref;
12356 v_rem_pers_nodes_ref cz_pb_mgr.t_ref;
12357 v_src_ps_nodes_ref cz_pb_mgr.t_ref;
12358 remote_node_cv ref_cursor;
12359 v_remote_ps_node_id cz_ps_nodes.ps_node_id%TYPE;
12360 v_remote_pers_node_id cz_ps_nodes.persistent_node_id%TYPE;
12361 l_remote_model_id NUMBER;
12362 BEGIN
12363 IF (x_status <> PUBLICATION_ERROR) THEN
12364 IF (p_model_not_exported_array.COUNT > 0) THEN
12365 FOR k IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
12366 LOOP
12367 BEGIN
12368 get_remote_model_id(cz_pb_mgr.v_server_id,p_model_not_exported_array(k),x_status,l_remote_model_id);
12369 v_remote_models_tbl(k):=l_remote_model_id;
12370 EXCEPTION
12371 WHEN OTHERS THEN
12372 cz_pb_mgr.v_err_message :=
12373 'No remote model found for source model: ' || p_model_not_exported_array(k)
12374 || ' on the remote server';
12375 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTENODES', SQLCODE);
12376 x_status := PUBLICATION_ERROR;
12377 RAISE;
12378 END;
12379
12380 IF (v_remote_models_tbl(k) > 0) THEN
12381 OPEN remote_node_cv FOR 'SELECT ps_node_id,persistent_node_id'
12382 || ' '
12383 || 'FROM cz_ps_nodes'
12384 || cz_pb_mgr.v_db_link
12385 || ' t'
12386 || ' '
12387 || 'WHERE t.devl_project_id = '
12388 || v_remote_models_tbl(k)
12389 || ' '
12390 || 'AND t.deleted_flag = ''0'' ';
12391
12392 LOOP
12393 FETCH remote_node_cv
12394 INTO v_remote_ps_node_id, v_remote_pers_node_id;
12395
12396 EXIT WHEN remote_node_cv%NOTFOUND;
12397 remote_ps_count := v_rem_ps_nodes_ref.COUNT + 1;
12398 v_rem_ps_nodes_ref(remote_ps_count) := v_remote_ps_node_id;
12399 v_rem_pers_nodes_ref(remote_ps_count) := v_remote_pers_node_id;
12400
12401 SELECT ps_node_id
12402 INTO v_src_ps_nodes_ref(remote_ps_count)
12403 FROM cz_ps_nodes
12404 WHERE cz_ps_nodes.devl_project_id = p_model_not_exported_array(k)
12405 AND cz_ps_nodes.persistent_node_id = v_remote_pers_node_id
12406 AND cz_ps_nodes.deleted_flag = record_not_deleted;
12407 END LOOP;
12408
12409 CLOSE remote_node_cv;
12410 END IF; /* end if of (v_remote_models_tbl(k) > 0) */
12411 END LOOP; /* end loop of FOR k IN p_model_not_exported_array */
12412
12413 IF (v_rem_ps_nodes_ref.COUNT > 0)
12414 THEN
12415 FOR m IN v_rem_ps_nodes_ref.FIRST .. v_rem_ps_nodes_ref.LAST
12416 LOOP
12417 cz_pb_mgr.v_cz_ps_nodes_idx_tbl(v_src_ps_nodes_ref(m)):=v_rem_ps_nodes_ref(m);
12418 END LOOP;
12419 END IF; /* end if of (v_rem_ps_nodes_ref.COUNT > 0) */
12420 END IF; /* end if of (p_model_not_exported_array.COUNT > 0) */
12421 END IF; /* end if of x_status <> PUBLICATION_ERROR */
12422 EXCEPTION
12423 WHEN OTHERS
12424 THEN
12425 cz_pb_mgr.v_err_message := 'Error in retrieving remote ps node ids for source models not exported: ' || SQLERRM;
12426 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMNODES', SQLCODE);
12427
12428 CLOSE remote_node_cv;
12429
12430 x_status := PUBLICATION_ERROR;
12431 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12432 RAISE;
12433 END get_rem_nodes_of_models;
12434
12435 -------------------------------------------------------------------------------------------------------------------------------------------
12436
12437 -----procedure inserts data into cz_ps_prop_vals for non-migration session
12438 -----@p_prop_vals_array: table of ps nodes
12439 -----@p_property_array : table of property ids
12440 -----@p_data_val_array : table of data values
12441 -----@x_status : publication status parameter
12442 PROCEDURE insert_into_ps_prop_vals
12443 AS
12444 BEGIN
12445 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
12446 THEN
12447 EXECUTE IMMEDIATE 'BEGIN'
12448 || ' '
12449 || 'cz_pb_mgr.v_expr_count := 0;'
12450 || ' '
12451 || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
12452 || ' '
12453 || 'LOOP'
12454 || ' '
12455 || 'cz_pb_mgr.v_propval_node_id := cz_pb_mgr.v_prop_vals_node_ref(i);'
12456 || ' '
12457 || 'cz_pb_mgr.v_propval_prop_id := cz_pb_mgr.v_prop_vals_prop_ref(i);'
12458 || ' '
12459 || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
12460 || ' '
12461 || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.v_prop_vals_data_num_ref(i);'
12462 || ' '
12463 || 'INSERT INTO cz_ps_prop_vals'
12464 || cz_pb_mgr.v_db_link
12465 || '('
12466 || ' '
12467 || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
12468 || ' '
12469 || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
12470 || ' '
12471 || '''0'',cz_pb_mgr.v_propval_data_num_value);'
12472 || ' '
12473 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
12474 || ' '
12475 || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
12476 || ' '
12477 || 'END IF;'
12478 || ' '
12479 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
12480 || ' '
12481 || 'END LOOP;'
12482 || ' '
12483 || 'END;';
12484 END IF;
12485
12486 COMMIT;
12487 EXCEPTION
12488 WHEN OTHERS
12489 THEN
12490 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12491 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
12492 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12493 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12494 RAISE;
12495 END insert_into_ps_prop_vals;
12496
12497 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12498 -----procedure inserts data into cz_ps_prop_vals
12499 -----@p_prop_vals_array: table of ps nodes
12500 -----@p_property_array : table of property ids
12501 -----@p_data_val_array : table of data values
12502 -----@x_status : publication status parameter
12503 PROCEDURE rm_insert_into_ps_prop_vals
12504 AS
12505
12506 StIdx INTEGER:=1;
12507 EndIdx INTEGER:= CZ_PB_MGR.record_commit_size;
12508 r_return_status CHAR(1):= FND_API.G_RET_STS_SUCCESS;
12509 r_msg_string VARCHAR2(1000):='';
12510 remote_exception EXCEPTION;
12511
12512 BEGIN
12513
12514 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
12515 log_timing_message('start bulk insert for remote SelectInsert');
12516 END IF;
12517
12518 IF ( (CZ_PB_MGR.v_status_code <> PUBLICATION_ERROR) AND (CZ_PB_MGR.v_prop_vals_node_ref.COUNT > 0) ) THEN
12519 IF (CZ_PB_MGR.v_server_id = 0) THEN
12520
12521 -- Bug7250510 for BULK insert to a local instance
12522 -- This code (If clause) can be removed as local insert can be done with the same remote insert procedure.
12523
12524 LOOP
12525
12526 IF (StIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT) THEN
12527 EXIT;
12528 END IF;
12529
12530 EndIdx := StIdx + CZ_PB_MGR.record_commit_size - 1;
12531
12532 IF (EndIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT) THEN
12533 EndIdx := CZ_PB_MGR.v_prop_vals_node_ref.COUNT;
12534 END IF;
12535
12536 FORALL i IN StIdx..EndIdx
12537
12538 INSERT INTO cz_ps_prop_vals(PS_NODE_ID, PROPERTY_ID, DATA_VALUE, DELETED_FLAG, DATA_NUM_VALUE)
12539 VALUES (CZ_PB_MGR.v_prop_vals_node_ref(i),
12540 CZ_PB_MGR.v_prop_vals_prop_ref(i),
12541 CZ_PB_MGR.v_prop_vals_data_ref(i),
12542 '0',
12543 CZ_PB_MGR.v_prop_vals_data_num_ref(i));
12544
12545 StIdx := StIdx + CZ_PB_MGR.record_commit_size;
12546
12547
12548 COMMIT;
12549
12550 END LOOP;
12551 ELSE
12552 -- Bug#7537580 : Execute the BULK insert procedure remotely - SKM
12553
12554 EXECUTE IMMEDIATE
12555
12556 'DECLARE'||' '||
12557 'InsPsNodeId CZ_PB_MGR.t_ref'||CZ_PB_MGR.v_db_link||'; '||
12558 'InsPropId CZ_PB_MGR.t_ref'||CZ_PB_MGR.v_db_link||'; '||
12559 'InsCharData CZ_PB_MGR.propDataType'||CZ_PB_MGR.v_db_link||'; '||
12560 'InsNumData CZ_PB_MGR.t_ref'||CZ_PB_MGR.v_db_link||'; '||
12561 'StIdx INTEGER:=1; '||
12562 'EndIdx INTEGER:= CZ_PB_MGR.record_commit_size; '||
12563
12564 'BEGIN' ||' '||
12565 'FOR j IN CZ_PB_MGR.v_prop_vals_node_ref.FIRST..CZ_PB_MGR.v_prop_vals_node_ref.LAST'||' '||
12566 'LOOP' ||' '||
12567 --'dbms_output.put_line(''I am in outer Loop :Tot Count :''||CZ_PB_MGR.v_prop_vals_node_ref.COUNT);'||' '||
12568 -- Start an inner loop here to create a packet array as per the commit size
12569 -- and send that small packet instead of sending a huge array to the remote instance.
12570 -- Initialize the array
12571
12572 'InsPsNodeId.DELETE; '||
12573 'InsPropId.DELETE; '||
12574 'InsCharData.DELETE; '||
12575 'InsNumData.DELETE; '||
12576
12577 'IF (StIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT) THEN'||' '||
12578 'EXIT;'||' '||
12579 'END IF;'||' '||
12580
12581 'EndIdx := StIdx + CZ_PB_MGR.record_commit_size - 1;'||' '||
12582
12583 'IF (EndIdx > CZ_PB_MGR.v_prop_vals_node_ref.COUNT)THEN'||' '||
12584 'EndIdx := CZ_PB_MGR.v_prop_vals_node_ref.COUNT;'||' '||
12585 'END IF;'||' '||
12586
12587 --'dbms_output.put_line(''I am before in inner loop : StIdx ''||StIdx);'||' '||
12588 --'dbms_output.put_line(''I am before in inner loop : EndIdx ''||EndIdx);'||' '||
12589 'FOR i IN StIdx..EndIdx '||' '||
12590
12591 'LOOP' ||' '||
12592 'InsPsNodeId(i) := CZ_PB_MGR.v_prop_vals_node_ref(i); '||' '||
12593 'InsPropId(i) := CZ_PB_MGR.v_prop_vals_prop_ref(i); '||' '||
12594 'InsCharData(i) := CZ_PB_MGR.v_prop_vals_data_ref(i); '||' '||
12595 'InsNumData(i) := CZ_PB_MGR.v_prop_vals_data_num_ref(i); '||' '||
12596
12597 'END LOOP;'||' '||
12598
12599 'StIdx := StIdx + CZ_PB_MGR.record_commit_size;'||' '||
12600
12601
12602
12603 --'dbms_output.put_line(''I am before insert : Count - :''||InsPsNodeId.COUNT);'||' '||
12604 'CZ_PB_MGR.REMOTE_INSERT_PS_PROP_VALS'||CZ_PB_MGR.v_db_link||'( '||
12605 'InsPsNodeId'||', '||
12606 'InsPropId'||', '||
12607 'InsCharData'||', '||
12608 'InsNumData'||'); '||' '||
12609
12610 --'dbms_output.put_line(''I am after insert - St Index:''||StIdx);'||' '||
12611 --'dbms_output.put_line(''I am after insert - End Index:''||EndIdx);'||' '||
12612
12613 'END LOOP;'||' '||
12614
12615 'END;';
12616
12617 END IF;
12618
12619 END IF;
12620
12621 -- Check the status of the RPC execution that will be in cz_db_logs table;
12622 -- Need to delete data in the same place using the same array of ps_node_id, property_id
12623 IF ( (CZ_PB_MGR.v_status_code <> PUBLICATION_ERROR) AND (CZ_PB_MGR.v_server_id <> 0) ) THEN
12624 BEGIN
12625 EXECUTE IMMEDIATE
12626 'SELECT statuscode, message '||' '||
12627 'FROM cz_db_logs'||CZ_PB_MGR.v_db_link||' '||
12628 'WHERE caller = ''REMOTE_INSERT_PS_PROP_VALS'' '||' '||
12629 'AND trunc(logtime) = trunc (sysdate) ' INTO r_return_status, r_msg_string;
12630
12631 EXCEPTION
12632 WHEN NO_DATA_FOUND THEN
12633 NULL;
12634 WHEN OTHERS THEN
12635 NULL;
12636 END;
12637
12638 IF (r_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
12639 CZ_PB_MGR.v_status_code := CZ_PB_MGR.PUBLICATION_ERROR;
12640 CZ_PB_MGR.v_sql_err_msg := r_msg_string;
12641 RAISE remote_exception;
12642 END IF;
12643 END IF;
12644
12645 COMMIT;
12646 EXCEPTION
12647 WHEN REMOTE_EXCEPTION THEN
12648 CZ_PB_MGR.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'remote_cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12649 CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LOAD_DATA:cz_ps_prop_vals',SQLCODE);
12650 CZ_PB_MGR.v_status_code := PUBLICATION_ERROR;
12651 CZ_PB_MGR.v_sql_err_msg := substr(SQLERRM,1,2000);
12652 WHEN OTHERS THEN
12653 CZ_PB_MGR.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'local_cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12654 CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LOAD_DATA:cz_ps_prop_vals',SQLCODE);
12655 CZ_PB_MGR.v_status_code := PUBLICATION_ERROR;
12656 CZ_PB_MGR.v_sql_err_msg := substr(SQLERRM,1,2000);
12657 RAISE;
12658 END rm_insert_into_ps_prop_vals;
12659
12660 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12661 -- Bug#7537580: Procedure to do Remote BULK Insert - SKM
12662 PROCEDURE remote_insert_ps_prop_vals( InsPsNodeId IN CZ_PB_MGR.t_ref,
12663 InsPropId IN CZ_PB_MGR.t_ref,
12664 InsCharData IN CZ_PB_MGR.propDataType,
12665 InsNumData IN CZ_PB_MGR.t_ref)
12666 AS
12667
12668 r_return_status CHAR(1):= FND_API.G_RET_STS_SUCCESS;
12669 r_msg_data VARCHAR2(1000) := '';
12670
12671 BEGIN
12672
12673 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
12674 log_timing_message('start bulk insert for remote SelectInsert calling procedure remote_insert_ps_prop_vals ');
12675 END IF;
12676
12677 IF (InsPsNodeId.COUNT > 0) THEN
12678
12679
12680 FORALL i IN InsPsNodeId.FIRST..InsPsNodeId.LAST
12681 INSERT INTO cz_ps_prop_vals(PS_NODE_ID, PROPERTY_ID, DATA_VALUE, DELETED_FLAG, DATA_NUM_VALUE)
12682 VALUES (InsPsNodeId(i), InsPropId(i), InsCharData(i), '0', InsNumData(i) );
12683
12684 COMMIT;
12685
12686 END IF;
12687
12688 EXCEPTION
12689 WHEN OTHERS THEN
12690 r_return_status := FND_API.G_RET_STS_ERROR;
12691 r_msg_data := 'Error Executing Remote Bulk Insert - PS_PROP_VALS'||SQLERRM;
12692 DELETE FROM cz_db_logs WHERE caller = 'REMOTE_INSERT_PS_PROP_VALS';
12693
12694 INSERT INTO cz_db_logs(logtime, caller, message, statuscode)
12695 VALUES(sysdate,'REMOTE_INSERT_PS_PROP_VALS',r_msg_data,r_return_status);
12696
12697 COMMIT;
12698 RAISE;
12699 END remote_insert_ps_prop_vals;
12700
12701 --end 9812709
12702
12703
12704 --------------------------------------------------------------------------------
12705 -- used for model conversion
12706 -- ps node ids in v_prop_vals_node_ref and translatable text ids in v_prop_vals_data_num_ref
12707 -- are already resolved in upload_item_schema
12708 PROCEDURE mc_insert_pspropvals IS
12709 BEGIN
12710 IF cz_pb_mgr.v_prop_vals_node_ref.COUNT=0 THEN RETURN; END IF;
12711
12712 FOR i IN cz_pb_mgr.v_prop_vals_node_ref.FIRST .. cz_pb_mgr.v_prop_vals_node_ref.LAST LOOP
12713 IF cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsValue' OR cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsDflt' THEN
12714 INSERT INTO cz_ps_prop_vals(ps_node_id, property_id, data_value, data_num_value, deleted_flag)
12715 VALUES(cz_pb_mgr.v_prop_vals_node_ref(i), cz_pb_mgr.v_prop_vals_prop_ref(i),
12716 cz_pb_mgr.v_prop_vals_data_ref(i), cz_pb_mgr.v_prop_vals_data_num_ref(i), '0');
12717 END IF;
12718 END LOOP;
12719 COMMIT;
12720 EXCEPTION
12721 WHEN OTHERS THEN
12722 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
12723 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
12724 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12725 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
12726 RAISE;
12727 END mc_insert_pspropvals;
12728
12729 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12730 PROCEDURE insert_des_chart_features(x_status IN OUT NOCOPY VARCHAR2)
12731 AS
12732 BEGIN
12733 IF (x_status <> PUBLICATION_ERROR)
12734 THEN
12735 IF (cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT > 0)
12736 THEN
12737 cz_pb_mgr.v_expr_count := 0;
12738
12739 EXECUTE IMMEDIATE 'BEGIN'
12740 || ' '
12741 || 'FOR I IN cz_pb_mgr.v_cz_des_feature_id_old_ref.FIRST..cz_pb_mgr.v_cz_des_feature_id_old_ref.LAST'
12742 || ' '
12743 || 'LOOP'
12744 || ' '
12745 || 'INSERT INTO cz_des_chart_features'
12746 || cz_pb_mgr.v_db_link
12747 || '('
12748 || ' '
12749 || 'RULE_ID'
12750 || ' '
12751 || ',FEATURE_ID'
12752 || ' '
12753 || ',FEATURE_TYPE'
12754 || ' '
12755 || ',DELETED_FLAG'
12756 || ' '
12757 || ',MODEL_REF_EXPL_ID)'
12758 || ' '
12759 || 'VALUES (cz_pb_mgr.v_cz_des_feature_rid_new_ref(i)'
12760 || ' '
12761 || ',cz_pb_mgr.v_cz_des_feature_id_old_ref(i)'
12762 || ' '
12763 || ',cz_pb_mgr.v_cz_des_feature_ft_typ_ref(i)'
12764 || ' '
12765 || ',''0'''
12766 || ' '
12767 || ',cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(i)'
12768 || ' '
12769 || ');'
12770 || ' '
12771 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
12772 || ' '
12773 || 'COMMIT;'
12774 || ' '
12775 || 'cz_pb_mgr.v_expr_count := 0;'
12776 || ' '
12777 || 'END IF;'
12778 || ' '
12779 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
12780 || ' '
12781 || 'END LOOP;'
12782 || ' '
12783 || 'END;';
12784 END IF;
12785 END IF;
12786
12787 COMMIT;
12788 EXCEPTION
12789 WHEN OTHERS
12790 THEN
12791 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
12792 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_FEATURES', SQLCODE);
12793 x_status := PUBLICATION_ERROR;
12794 RAISE;
12795 END;
12796
12797 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12798 ------the new ids from v_cz_des_cells_rule_id_new_ref
12799 PROCEDURE insert_des_chart_cells(x_status IN OUT NOCOPY VARCHAR2)
12800 AS
12801 BEGIN
12802 IF (x_status <> PUBLICATION_ERROR)
12803 THEN
12804 IF (cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.COUNT > 0)
12805 THEN
12806 cz_pb_mgr.v_expr_count := 0;
12807
12808 EXECUTE IMMEDIATE 'BEGIN'
12809 || ' '
12810 || 'FOR I IN cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.FIRST..cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.LAST'
12811 || ' '
12812 || 'LOOP'
12813 || ' '
12814 || 'INSERT INTO cz_des_chart_cells'
12815 || cz_pb_mgr.v_db_link
12816 || '('
12817 || ' '
12818 || 'RULE_ID'
12819 || ' '
12820 || ',PRIMARY_OPT_ID'
12821 || ' '
12822 || ',SECONDARY_OPT_ID'
12823 || ' '
12824 || ',MARK_CHAR'
12825 || ' '
12826 || ',DELETED_FLAG'
12827 || ' '
12828 || ',SECONDARY_FEAT_EXPL_ID'
12829 || ' '
12830 || ',SECONDARY_FEATURE_ID'
12831 || ' '
12832 || ')'
12833 || ' '
12834 || 'values ( cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(i)'
12835 || ' '
12836 || ',cz_pb_mgr.v_cz_des_cells_popt_id_ref(i)'
12837 || ' '
12838 || ',cz_pb_mgr.v_cz_des_cells_sopt_id_ref(i)'
12839 || ' '
12840 || ',cz_pb_mgr.v_cz_des_cells_mark_char_ref(i)'
12841 || ' '
12842 || ',''0'''
12843 || ' '
12844 || ',cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(i)'
12845 || ' '
12846 || ',cz_pb_mgr.v_cz_des_cells_sf_id_ref(i)'
12847 || ' '
12848 || ');'
12849 || ' '
12850 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
12851 || ' '
12852 || 'COMMIT;'
12853 || ' '
12854 || 'cz_pb_mgr.v_expr_count := 0;'
12855 || ' '
12856 || 'END IF;'
12857 || ' '
12858 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
12859 || ' '
12860 || 'END LOOP;'
12861 || ' '
12862 || 'END;';
12863 END IF;
12864 END IF;
12865
12866 COMMIT;
12867 EXCEPTION
12868 WHEN OTHERS
12869 THEN
12870 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
12871 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_CELLS', SQLCODE);
12872 x_status := PUBLICATION_ERROR;
12873 RAISE;
12874 END;
12875
12876 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12877 PROCEDURE collect_func_comp_specs
12878 IS
12879 v_cz_func_devl_old_tbl cz_pb_mgr.t_ref;
12880 v_cz_func_cid_old_tbl cz_pb_mgr.t_ref;
12881 v_cz_func_expl_old_tbl cz_pb_mgr.t_ref;
12882 v_cz_func_fld_old_tbl cz_pb_mgr.t_ref;
12883 v_object_type_tbl cz_pb_mgr.objtype;
12884 rec_count NUMBER := 0;
12885 BEGIN
12886 IF (cz_pb_mgr.g_log_timing = publication_timing)
12887 THEN
12888 log_timing_message('start bulk collect of func comp specs');
12889 END IF;
12890
12891 clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
12892
12893 IF (cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0)
12894 THEN
12895 FOR i IN cz_pb_mgr.v_cz_model_ref_expls_old_ref.FIRST .. cz_pb_mgr.v_cz_model_ref_expls_old_ref.LAST
12896 LOOP
12897 clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
12898 v_cz_func_devl_old_tbl.DELETE;
12899 v_cz_func_cid_old_tbl.DELETE;
12900 v_cz_func_expl_old_tbl.DELETE;
12901 v_cz_func_fld_old_tbl.DELETE;
12902 v_object_type_tbl.DELETE;
12903
12904 BEGIN
12905 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_func_comp_specs_seq
12906 , 'cz_func_comp_specs_s.nextval' || cz_pb_mgr.v_db_link
12907 ,cz_pb_mgr.v_oraclesequenceincr
12908 )
12909 ,func_comp_id, devl_project_id, component_id, model_ref_expl_id
12910 ,rule_folder_id, 'FNC'
12911 BULK COLLECT INTO cz_pb_mgr.v_cz_func_comp_new_tbl
12912 ,cz_pb_mgr.v_cz_func_comp_old_tbl, v_cz_func_devl_old_tbl, v_cz_func_cid_old_tbl, v_cz_func_expl_old_tbl
12913 ,v_cz_func_fld_old_tbl, v_object_type_tbl
12914 FROM cz_func_comp_specs t
12915 WHERE t.model_ref_expl_id = cz_pb_mgr.v_cz_model_ref_expls_old_ref(i) AND t.deleted_flag = '0';
12916 EXCEPTION
12917 WHEN NO_DATA_FOUND
12918 THEN
12919 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
12920 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FUNCCOMP', SQLCODE);
12921 WHEN OTHERS
12922 THEN
12923 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_func_comp_specs', 'SQLERRM', SQLERRM);
12924 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
12925 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
12926 RAISE;
12927 END;
12928
12929 rec_count := cz_pb_mgr.v_cz_func_comp_new_ref.COUNT;
12930
12931 IF (cz_pb_mgr.v_cz_func_comp_new_tbl.COUNT > 0)
12932 THEN
12933 FOR k IN cz_pb_mgr.v_cz_func_comp_new_tbl.FIRST .. cz_pb_mgr.v_cz_func_comp_new_tbl.LAST
12934 LOOP
12935 rec_count := rec_count + 1;
12936 cz_pb_mgr.v_cz_func_comp_new_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_new_tbl(k);
12937 cz_pb_mgr.v_cz_func_comp_old_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_old_tbl(k);
12938 cz_pb_mgr.v_cz_func_comp_idx_ref(cz_pb_mgr.v_cz_func_comp_old_tbl(k)):=cz_pb_mgr.v_cz_func_comp_new_tbl(k);
12939 cz_pb_mgr.v_cz_func_devl_old_ref(rec_count) := v_cz_func_devl_old_tbl(k);
12940 cz_pb_mgr.v_cz_func_cid_old_ref(rec_count) := v_cz_func_cid_old_tbl(k);
12941 cz_pb_mgr.v_cz_func_expl_old_ref(rec_count) := v_cz_func_expl_old_tbl(k);
12942 cz_pb_mgr.v_cz_func_fld_old_ref(rec_count) := v_cz_func_fld_old_tbl(k);
12943 cz_pb_mgr.v_cz_func_obj_ref(rec_count) := v_object_type_tbl(k);
12944 END LOOP;
12945 END IF;
12946 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_model_ref_expls_old_ref */
12947 END IF; /* end if of cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0 */
12948
12949 IF (cz_pb_mgr.g_log_timing = publication_timing)
12950 THEN
12951 log_timing_message('end bulk collect of func comp specs');
12952 END IF;
12953 EXCEPTION
12954 WHEN OTHERS
12955 THEN
12956 RAISE;
12957 END collect_func_comp_specs;
12958
12959 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12960 -----procedure that bulk collects rules of projects
12961 ----@p_rules_flag : indicates if rules have to be copied while publishing
12962 ----@p_model_array : models to be copied
12963 ----@p_rules_old_array : tbl containing old rule ids
12964 ----@p_rules_new_array : tbl for new rules
12965 ----@p_rules_sng_array : table for single index implementation
12966 ----@x_status : publication status parameter
12967 PROCEDURE bulk_collect_rules(
12968 p_rules_flag IN VARCHAR2
12969 ,p_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
12970 ,p_rules_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
12971 ,p_rules_new_array IN OUT NOCOPY cz_pb_mgr.t_ref
12972 ,p_rules_sng_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
12973 ,x_status IN OUT NOCOPY VARCHAR2
12974 )
12975 AS
12976 l_cz_rules_new_id_tbl cz_pb_mgr.t_ref;
12977 l_cz_rules_old_id_tbl cz_pb_mgr.t_ref;
12978 l_cz_rules_rf_id_tbl cz_pb_mgr.t_ref;
12979 l_cz_rules_proj_id_tbl cz_pb_mgr.t_ref;
12980 l_cz_rules_comp_id_tbl cz_pb_mgr.t_ref;
12981 l_cz_rules_rea_id_tbl cz_pb_mgr.t_ref;
12982 l_cz_rules_eff_id_tbl cz_pb_mgr.t_ref;
12983 l_cz_rules_unmsg_id_tbl cz_pb_mgr.t_ref;
12984 l_cz_rules_expl_id_tbl cz_pb_mgr.t_ref;
12985 l_cz_rules_sig_tbl cz_pb_mgr.t_ref;
12986 l_cz_rules_ui_tbl cz_pb_mgr.t_ref;
12987 l_cz_rules_perst_id_tbl cz_pb_mgr.t_ref;
12988 l_eff_usg_mask_tbl cz_pb_mgr.t_eff_usage_mask;
12989 l_object_type cz_rule_folders.object_type%TYPE;
12990 l_rule_type_tbl cz_pb_mgr.t_ref;
12991
12992 rec_count PLS_INTEGER;
12993
12994 BEGIN
12995 IF (x_status = PUBLICATION_ERROR OR p_model_array.COUNT = 0) THEN
12996 RETURN;
12997 END IF;
12998 rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT; -- ? 0
12999
13000 FOR i IN p_model_array.FIRST .. p_model_array.LAST
13001 LOOP
13002 l_cz_rules_new_id_tbl.DELETE;
13003 l_cz_rules_old_id_tbl.DELETE;
13004 l_cz_rules_rf_id_tbl.DELETE;
13005 l_cz_rules_proj_id_tbl.DELETE;
13006 l_cz_rules_comp_id_tbl.DELETE;
13007 l_cz_rules_rea_id_tbl.DELETE;
13008 l_cz_rules_eff_id_tbl.DELETE;
13009 l_cz_rules_unmsg_id_tbl.DELETE;
13010 l_cz_rules_expl_id_tbl.DELETE;
13011 l_cz_rules_sig_tbl.DELETE;
13012 l_cz_rules_ui_tbl.DELETE;
13013 l_eff_usg_mask_tbl.DELETE;
13014 l_cz_rules_perst_id_tbl.DELETE;
13015 l_rule_type_tbl.DELETE;
13016
13017 BEGIN
13018 IF (cz_pb_mgr.v_session_parameter = MODEL_COPY) THEN
13019 IF (COPY_RULES = 'YES') THEN
13020 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13021 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13022 ,rule_id, rule_folder_id, devl_project_id, component_id
13023 ,reason_id, unsatisfied_msg_id, effectivity_set_id
13024 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13025 ,persistent_rule_id, rule_type
13026 BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13027 ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13028 ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13029 ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13030 ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13031 FROM cz_rules t
13032 WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
13033 AND t.seeded_flag <> SEED_DATA
13034 AND ((CZ_PB_MGR.COPY_UIS='YES')
13035 OR
13036 (rule_type NOT IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION))
13037 )
13038 AND (
13039 (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13040 (t.ui_def_id>1 AND
13041 EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13042 WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13043 EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13044 WHERE p.page_id=t.ui_page_id AND
13045 p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13046 );
13047
13048 ELSIF (COPY_RULES = 'NO') THEN -- vigramak edit bug 13340775
13049 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13050 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13051 ,rule_id, rule_folder_id, devl_project_id, component_id
13052 ,reason_id, unsatisfied_msg_id, effectivity_set_id
13053 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13054 ,persistent_rule_id, rule_type
13055 BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13056 ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13057 ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13058 ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13059 ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13060 FROM cz_rules t
13061 WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
13062 AND t.seeded_flag <> SEED_DATA
13063 AND ((CZ_PB_MGR.COPY_UIS='YES' AND rule_type IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION,RULE_TYPE_POPULATOR))
13064 OR
13065 (CZ_PB_MGR.COPY_UIS='NO' AND rule_type IN (RULE_TYPE_POPULATOR))
13066 )
13067 AND (
13068 (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13069 (t.ui_def_id>1 AND
13070 EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13071 WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13072 EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13073 WHERE p.page_id=t.ui_page_id AND
13074 p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13075 );
13076 END IF;
13077 ELSE
13078 IF (p_rules_flag = 'YES') THEN
13079 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13080 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13081 ,rule_id, rule_folder_id, devl_project_id, component_id
13082 ,reason_id, unsatisfied_msg_id, effectivity_set_id
13083 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13084 ,persistent_rule_id, rule_type
13085 BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13086 ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13087 ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13088 ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13089 ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13090 FROM cz_rules t
13091 WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
13092 AND t.seeded_flag <> SEED_DATA
13093 AND (
13094 (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13095 (t.ui_def_id>1 AND
13096 EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13097 WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13098 EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13099 WHERE p.page_id=t.ui_page_id AND
13100 p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13101 );
13102
13103 ELSE
13104 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
13105 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
13106 ,rule_id, rule_folder_id, devl_project_id, component_id
13107 ,reason_id, unsatisfied_msg_id, effectivity_set_id
13108 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
13109 ,persistent_rule_id, rule_type
13110 BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
13111 ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
13112 ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
13113 ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
13114 ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
13115 FROM cz_rules t
13116 WHERE t.devl_project_id = p_model_array(i)
13117 AND t.rule_type IN (RULE_TYPE_CONFIG_EXTENSION, RULE_TYPE_DISPLAY_CONDITION,
13118 RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)
13119 AND t.deleted_flag = '0' AND t.seeded_flag <> SEED_DATA
13120 AND (
13121 (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
13122 (t.ui_def_id>1 AND
13123 EXISTS(SELECT NULL FROM CZ_UI_DEFS u
13124 WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
13125 EXISTS(SELECT NULL FROM CZ_UI_PAGES p
13126 WHERE p.page_id=t.ui_page_id AND
13127 p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
13128 );
13129
13130 END IF;
13131 END IF;
13132 EXCEPTION
13133 WHEN NO_DATA_FOUND THEN
13134 cz_pb_mgr.v_err_message := 'No rules found for model: ' || p_model_array(i);
13135 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
13136 WHEN OTHERS THEN
13137 RAISE;
13138 END;
13139
13140 IF l_cz_rules_new_id_tbl.COUNT > 0 THEN
13141 FOR k IN l_cz_rules_new_id_tbl.FIRST .. l_cz_rules_new_id_tbl.LAST
13142 LOOP
13143 rec_count := rec_count + 1;
13144 cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_cz_rules_old_id_tbl(k)):=l_cz_rules_new_id_tbl(k);
13145 cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := l_cz_rules_proj_id_tbl(k);
13146 cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := l_cz_rules_comp_id_tbl(k);
13147 cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := l_cz_rules_expl_id_tbl(k);
13148 p_rules_new_array(rec_count) := l_cz_rules_new_id_tbl(k);
13149 p_rules_old_array(rec_count) := l_cz_rules_old_id_tbl(k);
13150 cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := l_cz_rules_rea_id_tbl(k);
13151 cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := l_cz_rules_unmsg_id_tbl(k);
13152 cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := l_cz_rules_eff_id_tbl(k);
13153 cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := l_cz_rules_sig_tbl(k);
13154 cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := l_cz_rules_ui_tbl(k);
13155 cz_pb_mgr.v_cz_rule_usage_mask_tbl(rec_count) := l_eff_usg_mask_tbl(k);
13156 cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
13157 cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_cz_rules_perst_id_tbl(k);
13158
13159 IF l_rule_type_tbl(k) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION,
13160 RULE_TYPE_CAPTION, RULE_TYPE_POPULATOR) THEN
13161 cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
13162 ELSE
13163 cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := l_cz_rules_rf_id_tbl(k);
13164 END IF;
13165 END LOOP;
13166 END IF;
13167 END LOOP;
13168
13169 IF (rec_count > 0 AND (cz_pb_mgr.v_session_parameter = MODEL_COPY OR
13170 cz_pb_mgr.v_session_parameter = CZ_MODEL_MIGRATION_PVT.MIGRATE_MODEL)) THEN
13171 FOR j IN p_rules_old_array.FIRST .. p_rules_old_array.LAST
13172 LOOP
13173 BEGIN
13174 SELECT object_type INTO l_object_type
13175 FROM cz_rule_folders
13176 WHERE rule_folder_id = p_rules_old_array(j) AND object_type NOT IN ('FNC', 'RFL', 'RSQ');
13177 cz_pb_mgr.v_cz_rules_obj_ref(j) := l_object_type;
13178 EXCEPTION
13179 WHEN NO_DATA_FOUND THEN
13180 NULL;
13181 END;
13182 END LOOP;
13183 END IF;
13184 EXCEPTION
13185 WHEN OTHERS THEN
13186 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
13187 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
13188 x_status := PUBLICATION_ERROR;
13189 RAISE;
13190 END bulk_collect_rules;
13191
13192 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13193 ----procedure that clears all global pl/sql tables
13194 PROCEDURE clear_all_tables(x_status IN OUT NOCOPY VARCHAR2)
13195 AS
13196 BEGIN
13197 clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
13198 clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
13199 clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
13200 clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
13201 clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
13202 clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
13203 clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
13204 clear_tables('cz_ui_defs', 'tbl', cz_pb_mgr.v_status_code);
13205 clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
13206 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
13207 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
13208 clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
13209 clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
13210 clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
13211 clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
13212 clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
13213 clear_tables('cz_expression_nodes', 'ref', cz_pb_mgr.v_status_code);
13214 clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
13215 clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
13216 clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
13217 clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
13218 clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
13219 EXCEPTION
13220 WHEN OTHERS
13221 THEN
13222 cz_pb_mgr.v_err_message := 'Error in clearing all tables : ' || SQLERRM;
13223 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CLEARALLTABLES', SQLCODE);
13224 x_status := PUBLICATION_ERROR;
13225 RAISE;
13226 END clear_all_tables;
13227
13228 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13229 -----procedure to get the new ui_def_id that would be in the target publication
13230 -----@p_publication_id : source publication_id
13231 -----@p_old_ui_array : array containing old ui_def_ids
13232 -----@p_new_ui_array : array containing new ui_def_ids
13233 -----@x_new_ui_def_id : new ui_def_id
13234 -----@x_status : publication status parameter
13235 PROCEDURE get_new_ui_def_id(
13236 p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13237 ,p_old_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
13238 ,p_new_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
13239 ,x_new_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
13240 ,x_status IN OUT NOCOPY VARCHAR2
13241 )
13242 AS
13243 v_old_ui_def_id cz_model_publications.model_id%TYPE;
13244 BEGIN
13245 IF (x_status <> PUBLICATION_ERROR)
13246 THEN
13247 SELECT ui_def_id
13248 INTO v_old_ui_def_id
13249 FROM cz_model_publications
13250 WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
13251
13252 IF ((v_old_ui_def_id > 0) AND(p_new_ui_array.COUNT > 0))
13253 THEN
13254 IF (p_old_ui_array.COUNT > 0) THEN
13255 FOR i IN p_old_ui_array.FIRST .. p_old_ui_array.LAST
13256 LOOP
13257 IF (v_old_ui_def_id = p_old_ui_array(i))
13258 THEN
13259 x_new_ui_def_id := p_new_ui_array(i);
13260 EXIT;
13261 END IF;
13262 END LOOP;
13263 END IF;
13264 ELSE
13265 x_new_ui_def_id := NULL;
13266 END IF;
13267 END IF;
13268 EXCEPTION
13269 WHEN OTHERS
13270 THEN
13271 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_DATA_FOUND', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
13272 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:UIDEFID', SQLCODE);
13273 x_status := PUBLICATION_ERROR;
13274 RAISE;
13275 END get_new_ui_def_id;
13276
13277 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13278 ----procedure gets model id for target publication
13279 PROCEDURE get_new_model_id(
13280 p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13281 ,p_new_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
13282 ,x_new_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
13283 ,x_status IN OUT NOCOPY VARCHAR2
13284 )
13285 AS
13286 BEGIN
13287 IF (x_status <> PUBLICATION_ERROR)
13288 THEN
13289 IF (p_new_model_array.COUNT > 0)
13290 THEN
13291 SELECT remote_model_id
13292 INTO x_new_model_id
13293 FROM cz_pb_model_exports
13294 WHERE cz_pb_model_exports.publication_id = p_publication_id
13295 AND cz_pb_model_exports.model_id = cz_pb_model_exports.root_model_id
13296 ---AND cz_pb_model_exports.export_reverse_seq = 0
13297 AND cz_pb_model_exports.superseded_flag = 'N';
13298 END IF;
13299
13300 ---the above query has been changed to hold good for circular connectors
13301 ---In circular references the root may not have an export rev seq of 0
13302 UPDATE cz_pb_model_exports
13303 SET superseded_flag = 'Y'
13304 WHERE publication_id = p_publication_id AND superseded_flag = 'N';
13305 END IF;
13306 EXCEPTION
13307 WHEN OTHERS
13308 THEN
13309 cz_pb_mgr.v_err_message := 'Error in retrieving new model id for publication id: ' || p_publication_id || ' : ' || SQLERRM;
13310 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETNEWMODELID', SQLCODE);
13311 x_status := PUBLICATION_ERROR;
13312 RAISE;
13313 END get_new_model_id;
13314
13315 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13316 ------procedure that retrieves the source publication_id, export_status, server_id, remote_publication_id
13317 ------from cz_model_publications table
13318 ------@p_publication_id : publication id whose info is required
13319 ------@p_status : publication_status
13320 ------@x_model_id : model that is to be published
13321 ------@x_ui_def_id : ui_def_id
13322 ------@x_export_status : prev publication status
13323 ------@x_remote_publication_id : prev remote publication id
13324 ------@x_status : publication status parameter
13325 PROCEDURE get_source_pb_info(
13326 p_publication_id IN cz_model_publications.publication_id%TYPE
13327 ,x_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
13328 ,x_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
13329 ,x_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
13330 ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13331 ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13332 ,x_object_type IN OUT NOCOPY cz_model_publications.object_type%TYPE
13333 ,x_pb_mode IN OUT NOCOPY cz_model_publications.publication_mode%TYPE
13334 ,x_status IN OUT NOCOPY VARCHAR2
13335 )
13336 AS
13337 BEGIN
13338 IF (x_status <> PUBLICATION_ERROR)
13339 THEN
13340 SELECT object_id, ui_def_id, server_id, export_status, remote_publication_id, object_type, publication_mode, NVL(config_engine_type, 'L')
13341 INTO x_model_id, x_ui_def_id, x_server_id, x_export_status, x_remote_publication_id, x_object_type, x_pb_mode, g_engine_type
13342 FROM cz_model_publications, cz_devl_projects
13343 WHERE cz_model_publications.publication_id = p_publication_id
13344 AND cz_model_publications.deleted_flag = record_not_deleted
13345 AND cz_model_publications.object_id = cz_devl_projects.devl_project_id
13346 AND cz_devl_projects.deleted_flag = '0';
13347 -- Bug 5507300; 06-Sep-2006; kdande; Removed the following condition as user should be able to Republish disabled publications.
13348 -- AND cz_model_publications.disabled_flag = '0';
13349
13350 ----if x_ui_def_id is null
13351 IF (x_ui_def_id IS NULL)
13352 THEN
13353 BEGIN
13354 SELECT ui_def_id
13355 INTO x_ui_def_id
13356 FROM cz_ui_defs
13357 WHERE cz_ui_defs.devl_project_id = x_model_id AND cz_ui_defs.deleted_flag = '0' AND cz_ui_defs.NAME NOT LIKE 'MUID' AND ROWNUM < 2;
13358 EXCEPTION
13359 WHEN NO_DATA_FOUND
13360 THEN
13361 x_ui_def_id := NULL;
13362 WHEN OTHERS
13363 THEN
13364 x_ui_def_id := 0;
13365 END;
13366 END IF;
13367 END IF;
13368 EXCEPTION
13369 WHEN OTHERS
13370 THEN
13371 cz_pb_mgr.v_err_message :=
13372 'Error in retrieving source publication info for publication id : ' || TO_CHAR(p_publication_id) || ' : '
13373 || SQLERRM;
13374 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13375 x_status := PUBLICATION_ERROR;
13376 RAISE;
13377 END get_source_pb_info;
13378
13379 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13380 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
13381 ------from cz_model_publications table
13382 ------@p_publication_id : publication id whose info is required
13383 ------@p_status : publication_status
13384 ------@x_prev publication id : prev publication id
13385 ------@x_prev_export_status : prev publication status
13386 ------@x_prev_remote_publication_id : prev remote publication id
13387 ------@x_status : publication status parameter
13388 PROCEDURE get_new_copy_pb_info(
13389 p_publication_id IN cz_model_publications.publication_id%TYPE
13390 ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13391 ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13392 ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13393 ,x_status IN OUT NOCOPY VARCHAR2
13394 )
13395 AS
13396 BEGIN
13397 IF (p_publication_id IS NOT NULL)
13398 THEN
13399 SELECT publication_id, export_status, remote_publication_id
13400 INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
13401 FROM cz_model_publications
13402 WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
13403 END IF;
13404 EXCEPTION
13405 WHEN OTHERS
13406 THEN
13407 cz_pb_mgr.v_err_message :=
13408 'Error in retrieving publication info (newcopy) for publication id : ' || TO_CHAR(p_publication_id) || ' : '
13409 || SQLERRM;
13410 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13411 x_status := PUBLICATION_ERROR;
13412 RAISE;
13413 END get_new_copy_pb_info;
13414
13415 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13416 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
13417 ------from cz_model_publications table
13418 ------@p_publication_id : publication id whose info is required
13419 ------@p_status : publication_status
13420 ------@x_prev publication id : prev publication id
13421 ------@x_prev_export_status : prev publication status
13422 ------@x_prev_remote_publication_id : prev remote publication id
13423 ------@x_status : publication status parameter
13424 PROCEDURE get_republish_pb_info(
13425 p_publication_id IN cz_model_publications.publication_id%TYPE
13426 ,p_status IN cz_model_publications.export_status%TYPE
13427 ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13428 ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13429 ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13430 ,x_status IN OUT NOCOPY VARCHAR2
13431 )
13432 AS
13433 BEGIN
13434 SELECT publication_id, export_status, remote_publication_id
13435 INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
13436 FROM cz_model_publications
13437 WHERE cz_model_publications.remote_publication_id = p_publication_id
13438 AND cz_model_publications.export_status = p_status
13439 AND cz_model_publications.deleted_flag = record_not_deleted;
13440 EXCEPTION
13441 WHEN OTHERS
13442 THEN
13443 cz_pb_mgr.v_err_message := 'Error in retrieving publication info (republish) for publication id : ' || p_publication_id || ' : ' || SQLERRM;
13444 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13445 x_status := PUBLICATION_ERROR;
13446 RAISE;
13447 END get_republish_pb_info;
13448
13449 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13450 ----------procedure to get the max publication id for a model
13451 ----------@p_model_id : devl_project_id of the model
13452 ----------@p_server_id : server_id of the publication request
13453 ----------@x_publication_id : retrieved max publication id
13454 ----------@x_status: publication status parameter
13455 PROCEDURE get_max_pub_id(
13456 p_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
13457 ,p_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
13458 ,x_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13459 ,x_status IN OUT NOCOPY VARCHAR2
13460 )
13461 AS
13462 BEGIN
13463 SELECT MAX(publication_id)
13464 INTO x_publication_id
13465 FROM cz_model_publications t
13466 WHERE t.model_id = p_model_id
13467 AND t.server_id = p_server_id
13468 AND t.model_last_struct_update = (SELECT last_struct_update
13469 FROM cz_devl_projects
13470 WHERE cz_devl_projects.devl_project_id = p_model_id)
13471 AND t.export_status IN('PUP', 'OK')
13472 AND t.source_target_flag = g_source_flag
13473 AND t.publication_id <> cz_pb_mgr.v_publication_id
13474 AND t.deleted_flag = record_not_deleted;
13475 EXCEPTION
13476 WHEN NO_DATA_FOUND
13477 THEN
13478 NULL;
13479 WHEN OTHERS
13480 THEN
13481 cz_pb_mgr.v_err_message := 'Error in retrieving max publication id for model id : ' || p_model_id || ' : ' || SQLERRM;
13482 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
13483 x_status := PUBLICATION_ERROR;
13484 RAISE;
13485 END get_max_pub_id;
13486
13487 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13488 -----procedure that retrieves previous publication
13489 -----if an existing publication is re-published. This is again based on if all UIs are exported
13490 -----or no UI is exported i.e., only a publication request is created and no data is exported
13491 -----@p_ui_str : values are 'UI' or 'x' that indicates if UIs are exported
13492 -----@p_session_parameter : differentiates between a publishing process and deep copy
13493 -----@p_rem_publication_id : remote publication id of the existing publication
13494 -----@x_prev publication id : prev publication id
13495 -----@x_prev_export_status : prev publication status
13496 -----@x_prev_remote_publication_id : prev remote publication id
13497 -----@x_status : publication status parameter
13498 PROCEDURE get_prev_publication(
13499 p_ui_str IN OUT NOCOPY VARCHAR2
13500 ,p_session_parameter IN OUT NOCOPY VARCHAR2
13501 ,p_rem_publication_id IN cz_model_publications.publication_id%TYPE
13502 ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13503 ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13504 ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13505 ,x_status IN OUT NOCOPY VARCHAR2
13506 )
13507 AS
13508 v_pr_pub_id cz_model_publications.publication_id%TYPE;
13509 BEGIN
13510 IF ((p_ui_str = 'UI') AND(p_session_parameter <> model_copy))
13511 THEN
13512 IF (p_rem_publication_id IS NOT NULL)
13513 THEN
13514 get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13515
13516 IF (x_prev_publication_id > 0)
13517 THEN
13518 cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
13519 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
13520 END IF;
13521 ELSE
13522 get_max_pub_id(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_pr_pub_id, cz_pb_mgr.v_status_code);
13523 get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13524
13525 IF (x_prev_publication_id > 0)
13526 THEN
13527 cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(x_prev_publication_id);
13528 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
13529 END IF;
13530 END IF; /* end if of ( p_rem_publication_id IS NOT NULL) */
13531 ELSIF((cz_pb_mgr.v_ui_str = 'x') AND(cz_pb_mgr.v_session_parameter <> model_copy))
13532 THEN
13533 IF (p_rem_publication_id IS NOT NULL)
13534 THEN
13535 get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13536
13537 IF (x_prev_publication_id > 0)
13538 THEN
13539 cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
13540 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
13541 END IF;
13542 ELSE
13543 get_max_pub_id(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_pr_pub_id, cz_pb_mgr.v_status_code);
13544 get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
13545 END IF;
13546 END IF; /* end if of (p_ui_str = 'UI') AND (p_session_parameter <> MODEL_COPY) */
13547 EXCEPTION
13548 WHEN OTHERS
13549 THEN
13550 cz_pb_mgr.v_err_message :=
13551 'Error in retrieving previous publication info for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
13552 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPREVPUB', SQLCODE);
13553 RAISE;
13554 END get_prev_publication;
13555
13556 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13557 ------procedure inserts target publication record
13558 ------@p_new_publication_id : new publication id
13559 ------@p_old_publication_id : old publication id
13560 ------@p_link IN OUT NOCOPY : db link
13561 ------@x_status publication status parameter
13562 PROCEDURE insert_tgt_publication(
13563 p_new_publication_id IN cz_model_publications.publication_id%TYPE
13564 ,p_old_publication_id IN cz_model_publications.publication_id%TYPE
13565 ,p_model_id IN cz_model_publications.model_id%TYPE
13566 ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
13567 ,p_link IN OUT NOCOPY VARCHAR2
13568 ,p_insert_flag IN VARCHAR2
13569 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
13570 )
13571 AS
13572 v_ui_def VARCHAR2(2000);
13573 v_inst_str VARCHAR2(8000);
13574 v_src_ui_def_id VARCHAR2(2000);
13575 BEGIN
13576 IF ((p_new_publication_id > 0) AND(x_status <> PUBLICATION_ERROR))
13577 THEN
13578 get_synchronized_pb_values(p_old_publication_id);
13579
13580 IF (p_ui_def_id IS NULL)
13581 THEN
13582 v_ui_def := 'NULL';
13583 v_src_ui_def_id := 'NULL';
13584 ELSE
13585 v_ui_def := TO_CHAR(p_ui_def_id);
13586 v_src_ui_def_id := TO_CHAR(cz_pb_mgr.v_root_ui_def_id);
13587 END IF;
13588
13589 v_inst_str :=
13590 'INSERT INTO cz_model_publications'
13591 || p_link
13592 || ''
13593 || ' '
13594 || '(PUBLICATION_ID'
13595 || ' '
13596 || ',MODEL_ID'
13597 || ' '
13598 || ',OBJECT_ID'
13599 || ' '
13600 || ',OBJECT_TYPE'
13601 || ' '
13602 || ',SERVER_ID'
13603 || ' '
13604 || ',ORGANIZATION_ID'
13605 || ' '
13606 || ',TOP_ITEM_ID'
13607 || ' '
13608 || ',PRODUCT_KEY'
13609 || ' '
13610 || ',PUBLICATION_MODE'
13611 || ' '
13612 || ',UI_DEF_ID'
13613 || ' '
13614 || ',UI_STYLE'
13615 || ' '
13616 || ',APPLICABLE_FROM'
13617 || ' '
13618 || ',APPLICABLE_UNTIL'
13619 || ' '
13620 || ',EXPORT_STATUS'
13621 || ' '
13622 || ',MODEL_PERSISTENT_ID'
13623 || ' '
13624 || ',DELETED_FLAG'
13625 || ' '
13626 || ',MODEL_LAST_STRUCT_UPDATE'
13627 || ' '
13628 || ',MODEL_LAST_LOGIC_UPDATE'
13629 || ' '
13630 || ',MODEL_LAST_UPDATED'
13631 || ' '
13632 || ',SOURCE_TARGET_FLAG'
13633 || ' '
13634 || ',REMOTE_PUBLICATION_ID'
13635 || ' '
13636 || ',SOURCE_UI_DEF_ID'
13637 || ' '
13638 || ',SOURCE_MODEL_ID'
13639 || ' '
13640 || ',CONTAINER'
13641 || ' '
13642 || ',PAGE_LAYOUT'
13643 || ' '
13644 || ',disabled_flag'
13645 || ' '
13646 || ')'
13647 || ' '
13648 || 'SELECT :1'
13649 || ' '
13650 || ',:2'
13651 || ' '
13652 || ',:3'
13653 || ' '
13654 || ',OBJECT_TYPE'
13655 || ' '
13656 || ',SERVER_ID'
13657 || ' '
13658 || ',:4'
13659 || ' '
13660 || ',:5'
13661 || ' '
13662 || ',:6'
13663 || ' '
13664 || ',PUBLICATION_MODE'
13665 || ' '
13666 || ',:7'
13667 || ' '
13668 || ',UI_STYLE'
13669 || ' '
13670 || ',APPLICABLE_FROM'
13671 || ' '
13672 || ',APPLICABLE_UNTIL'
13673 || ' '
13674 || ',''OK'''
13675 || ' '
13676 || ',MODEL_PERSISTENT_ID'
13677 || ' '
13678 || ',DELETED_FLAG'
13679 || ' '
13680 || ',MODEL_LAST_STRUCT_UPDATE'
13681 || ' '
13682 || ',MODEL_LAST_LOGIC_UPDATE'
13683 || ' '
13684 || ',MODEL_LAST_UPDATED'
13685 || ' '
13686 || ','''
13687 || g_target_flag
13688 || ''''
13689 || ' '
13690 || ',:8'
13691 || ' '
13692 || ',:9'
13693 || ' '
13694 || ',:10'
13695 || ' '
13696 || ',CONTAINER'
13697 || ' '
13698 || ',PAGE_LAYOUT'
13699 || ' '
13700 || ',disabled_flag'
13701 || ' '
13702 || 'FROM cz_model_publications'
13703 || ' '
13704 || 'WHERE publication_id = :11 ';
13705
13706 EXECUTE IMMEDIATE v_inst_str
13707 USING p_new_publication_id
13708 ,p_model_id
13709 ,p_model_id
13710 ,cz_pb_mgr.v_bomsynch_org_id
13711 ,cz_pb_mgr.v_bomsynch_item_id
13712 ,cz_pb_mgr.v_bomsynch_product_key
13713 ,p_ui_def_id
13714 ,p_old_publication_id
13715 ,cz_pb_mgr.v_root_ui_def_id
13716 ,cz_pb_mgr.v_root_model_id
13717 ,p_old_publication_id;
13718
13719 ---------update remote_publication on the source
13720 IF (p_insert_flag = 'REPUBLISH')
13721 THEN
13722 UPDATE cz_model_publications
13723 SET remote_publication_id = p_new_publication_id
13724 WHERE publication_id = cz_pb_mgr.v_cz_model_pub_old_id;
13725 ELSIF(p_insert_flag = 'NEW')
13726 THEN
13727 UPDATE cz_model_publications
13728 SET remote_publication_id = p_new_publication_id
13729 WHERE publication_id = p_old_publication_id;
13730 END IF;
13731
13732 --Bug#12653412: SKM**SUN PURGE (Update all the models in cz_devl_projects.published to NULL
13733 --based on the list of models exported (from cz_model_exports.remote_model_id) based on p_new/old_publication_id
13734 EXECUTE IMMEDIATE 'UPDATE cz_devl_projects SET published = NULL ' || ' ' ||
13735 'WHERE devl_project_id IN (SELECT remote_model_id '|| ' '||
13736 'FROM cz_pb_model_exports WHERE publication_id = ' ||p_old_publication_id|| ')';
13737
13738 ------update for republish_model api
13739 IF (cz_pb_mgr.v_republish_model = new_copy_mode)
13740 THEN
13741 EXECUTE IMMEDIATE 'UPDATE cz_model_publications'
13742 || p_link
13743 || ' t '
13744 || ' '
13745 || 'SET t.applicable_from = :1,'
13746 || ' '
13747 || 't.applicable_until = :2'
13748 || ' '
13749 || 'WHERE t.publication_id = :3 '
13750 USING v_repub_appl_from, v_repub_appl_until, v_repub_remote_pb_id;
13751 END IF;
13752
13753 EXECUTE IMMEDIATE 'UPDATE cz_devl_projects set checkout_user = NULL ' || ' ' || 'WHERE devl_project_id = ' || NVL(p_model_id, 0);
13754 END IF;
13755
13756 COMMIT;
13757 EXCEPTION
13758 WHEN OTHERS
13759 THEN
13760 cz_pb_mgr.v_err_message := 'Error in inserting target publication for source publication id: ' || p_old_publication_id || ' : ' || SQLERRM;
13761 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
13762 x_status := PUBLICATION_ERROR;
13763 RAISE;
13764 END insert_tgt_publication;
13765
13766 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13767 -----procedure that inserts publication applicability parameters on the target instance
13768 PROCEDURE insert_pb_parameters(
13769 p_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13770 ,p_old_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
13771 ,p_session_parameter IN OUT NOCOPY VARCHAR2
13772 ,p_db_link IN VARCHAR2
13773 ,x_status IN OUT NOCOPY VARCHAR2
13774 )
13775 AS
13776 BEGIN
13777 IF (x_status <> PUBLICATION_ERROR) AND(p_session_parameter <> model_copy)
13778 THEN
13779 ---------------- insert the fields of cz_pb_client_apps
13780 cz_pb_mgr.v_insert_string :='INSERT INTO cz_pb_client_apps'||p_db_link || ' ' ||
13781 '(PUBLICATION_ID,FND_APPLICATION_ID,APPLICATION_SHORT_NAME,NOTES)' || ' ' ||
13782 'SELECT '||p_new_publication_id||',t.APPLICATION_ID,t.APPLICATION_SHORT_NAME,NOTES' || ' ' ||
13783 'FROM cz_pb_client_apps,fnd_application' ||p_db_link|| ' ' ||
13784 't WHERE cz_pb_client_apps.publication_id = :1' || ' ' ||
13785 'and cz_pb_client_apps.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME';
13786 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
13787
13788 COMMIT;
13789 ----------insert the fields of cz_publication_usages
13790 cz_pb_mgr.v_insert_string :=
13791 'INSERT INTO cz_publication_usages'
13792 || p_db_link
13793 || ' '
13794 || '(PUBLICATION_ID,USAGE_ID)'
13795 || ' '
13796 || 'SELECT '
13797 || p_new_publication_id
13798 || ',USAGE_ID'
13799 || ' '
13800 || 'FROM cz_publication_usages'
13801 || ' '
13802 || 'WHERE publication_id = :1';
13803
13804 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
13805
13806
13807 COMMIT;
13808 ---------------- insert the fields of cz_pb_languages
13809 cz_pb_mgr.v_insert_string :=
13810 'INSERT INTO cz_pb_languages'
13811 || p_db_link
13812 || ' '
13813 || '(PUBLICATION_ID,LANGUAGE)'
13814 || ' '
13815 || 'SELECT '
13816 || p_new_publication_id
13817 || ',LANGUAGE'
13818 || ' '
13819 || 'FROM cz_pb_languages'
13820 || ' '
13821 || 'WHERE cz_pb_languages.publication_id = :1';
13822
13823 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
13824
13825 COMMIT;
13826 END IF; /* end if of x_status <> PUBLICATION_ERROR) AND (p_session_parameter <> MODEL_COPY */
13827 EXCEPTION
13828 WHEN OTHERS
13829 THEN
13830 cz_pb_mgr.v_err_message :=
13831 'Error in inserting publication parameters on the target instance for source publication id: ' || p_old_publication_id || ' : '
13832 || SQLERRM;
13833 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
13834 x_status := PUBLICATION_ERROR;
13835 RAISE;
13836 END insert_pb_parameters;
13837
13838 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13839 PROCEDURE insert_devl_projects(
13840 p_new_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
13841 ,p_old_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
13842 ,p_orig_sys_ref IN OUT NOCOPY cz_devl_projects.orig_sys_ref%TYPE
13843 ,x_status IN OUT NOCOPY VARCHAR2
13844 )
13845 AS
13846 l_sql_query VARCHAR2(32000);
13847 BEGIN
13848 IF (x_status <> PUBLICATION_ERROR)
13849 THEN
13850 cz_pb_mgr.v_devl_orig_sys_ref := NULL;
13851 cz_pb_mgr.l_intl_text_id_tbl.DELETE;
13852 cz_pb_mgr.l_bom_caption_rule_tbl.DELETE;
13853 cz_pb_mgr.l_nonbom_caption_rule_tbl.DELETE;
13854 cz_pb_mgr.l_bom_caption_rule := 0;
13855 cz_pb_mgr.l_nonbom_capt_rule_id := 0;
13856 l_devl_proj_inv_id := NULL;
13857 l_devl_proj_org_id := NULL;
13858 l_devl_proj_product_key := NULL;
13859 l_bom_caption_text_id := 0;
13860 l_nonbom_caption_text_id := 0;
13861
13862 SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_origsysref(orig_sys_ref), orig_sys_ref), bom_caption_rule_id
13863 ,nonbom_caption_rule_id, DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_invid(inventory_item_id), inventory_item_id)
13864 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_orgid(organization_id), organization_id)
13865 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_productkey(product_key), product_key), bom_caption_text_id
13866 ,nonbom_caption_text_id
13867 INTO cz_pb_mgr.v_devl_orig_sys_ref, cz_pb_mgr.l_bom_caption_rule
13868 ,cz_pb_mgr.l_nonbom_capt_rule_id, cz_pb_mgr.l_devl_proj_inv_id
13869 ,cz_pb_mgr.l_devl_proj_org_id
13870 ,cz_pb_mgr.l_devl_proj_product_key, cz_pb_mgr.l_bom_caption_text_id
13871 ,cz_pb_mgr.l_nonbom_caption_text_id
13872 FROM cz_devl_projects
13873 WHERE cz_devl_projects.devl_project_id = p_old_model_id;
13874
13875 IF (cz_pb_mgr.l_bom_caption_text_id <> 0)
13876 THEN
13877 cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_bom_caption_text_id;
13878 insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'bom capt text of cz_devl_projects');
13879 resolve_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'bom capt text of cz_devl_projects');
13880 cz_pb_mgr.l_bom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
13881 ELSE
13882 cz_pb_mgr.l_bom_caption_text_id := NULL;
13883 END IF;
13884
13885 IF (cz_pb_mgr.l_nonbom_caption_text_id <> 0)
13886 THEN
13887 cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_nonbom_caption_text_id;
13888 insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'non bom capt text of cz_devl_projects');
13889 resolve_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'non bom capt text of cz_devl_projects');
13890 cz_pb_mgr.l_nonbom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
13891 ELSE
13892 cz_pb_mgr.l_nonbom_caption_text_id := NULL;
13893 END IF;
13894
13895 IF (cz_pb_mgr.l_bom_caption_rule <> 0)
13896 THEN
13897 resolve_ids(cz_pb_mgr.l_bom_caption_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'bom rule ids of projects', ENTITY_TYPE_RULE);
13898 ELSE
13899 cz_pb_mgr.l_bom_caption_rule := NULL;
13900 END IF;
13901
13902 IF (cz_pb_mgr.l_nonbom_capt_rule_id <> 0)
13903 THEN
13904 resolve_ids(cz_pb_mgr.l_nonbom_caption_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'non bom rule ids of projects', ENTITY_TYPE_RULE);
13905 ELSE
13906 cz_pb_mgr.l_nonbom_capt_rule_id := NULL;
13907 END IF;
13908
13909 --Bug#12653412: SKM**SUN PURGE
13910 --Populate sysdate for the published column here
13911
13912 l_sql_query :=
13913 'BEGIN INSERT INTO cz_devl_projects'
13914 || cz_pb_mgr.v_db_link
13915 || '(DEVL_PROJECT_ID'
13916 || ' '
13917 || ',NAME,VERSION,DESC_TEXT,ORIG_SYS_REF,PUBLISHED,LAST_STRUCT_UPDATE'
13918 || ' '
13919 || ',UI_TIMESTAMP_STRUCT_UPDATE'
13920 || ' '
13921 || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
13922 || ' '
13923 || ',MODEL_TYPE,bom_caption_rule_id,nonbom_caption_rule_id'
13924 || ' '
13925 || ',organization_id,inventory_item_id,product_key'
13926 || ' '
13927 || ',bom_caption_text_id,nonbom_caption_text_id,POST_MIGR_CHANGE_FLAG,config_engine_type)'
13928 || ' '
13929 || 'SELECT :1'
13930 || ' '
13931 || ',NAME,VERSION,DESC_TEXT,:2,sysdate,LAST_STRUCT_UPDATE'
13932 || ' '
13933 || ',UI_TIMESTAMP_STRUCT_UPDATE'
13934 || ' '
13935 || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
13936 || ' '
13937 || ',MODEL_TYPE,:3,:4'
13938 || ' '
13939 || ',:5,:6,:7'
13940 || ' '
13941 || ',:8,:9,POST_MIGR_CHANGE_FLAG,config_engine_type'
13942 || ' '
13943 || 'FROM cz_devl_projects'
13944 || ' '
13945 || 'WHERE cz_devl_projects.devl_project_id = '
13946 || TO_CHAR(p_old_model_id)
13947 || '; END; ';
13948
13949 EXECUTE IMMEDIATE l_sql_query
13950 USING p_new_model_id
13951 ,cz_pb_mgr.v_devl_orig_sys_ref
13952 ,cz_pb_mgr.l_bom_caption_rule
13953 ,cz_pb_mgr.l_nonbom_capt_rule_id
13954 ,cz_pb_mgr.l_devl_proj_org_id
13955 ,cz_pb_mgr.l_devl_proj_inv_id
13956 ,cz_pb_mgr.l_devl_proj_product_key
13957 ,cz_pb_mgr.l_bom_caption_text_id
13958 ,cz_pb_mgr.l_nonbom_caption_text_id;
13959 END IF;
13960
13961 COMMIT;
13962 EXCEPTION
13963 WHEN OTHERS
13964 THEN
13965 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_devl_projects', 'SQLERRM', SQLERRM);
13966 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
13967 x_status := PUBLICATION_ERROR;
13968 RAISE;
13969 END insert_devl_projects;
13970
13971 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13972 ---------procedure retrieves the value of sequence incrementor
13973 PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE)
13974 AS
13975 BEGIN
13976 SELECT VALUE
13977 INTO x_oraclesequenceincr
13978 FROM cz_db_settings
13979 WHERE cz_db_settings.setting_id = sequence_incr_str;
13980 EXCEPTION
13981 WHEN OTHERS
13982 THEN
13983 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_INCR');
13984 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SEQINCR', SQLCODE);
13985 x_oraclesequenceincr := 20;
13986 END;
13987
13988 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13989 -----procedure retrieves copy rules flag
13990 PROCEDURE get_copy_rules_flg(x_copyrules IN OUT NOCOPY VARCHAR2)
13991 AS
13992 BEGIN
13993 IF (cz_pb_mgr.v_session_parameter = pub_model)
13994 THEN
13995 SELECT VALUE
13996 INTO x_copyrules
13997 FROM cz_db_settings
13998 WHERE cz_db_settings.setting_id = rule_copy;
13999 ELSE
14000 x_copyrules := copy_rules;
14001 END IF;
14002 EXCEPTION
14003 WHEN OTHERS
14004 THEN
14005 x_copyrules := 'YES';
14006 END;
14007 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14008 -----bug #10417318
14009 -----procedureto to get multi Publication flag from cz_db_settings. SUN ER
14010 -----If this flag is Yes, then only we will allow multi server publication
14011 PROCEDURE get_multi_server_pub_flg
14012 AS
14013 BEGIN
14014 IF (CZ_PB_MGR.v_session_parameter = PUB_MODEL)
14015 THEN
14016 SELECT DECODE(UPPER(value),'TRUE','YES','FALSE','NO','T','YES','F','NO','1','YES','0','NO','YES','YES','NO','NO','Y','YES','N','NO','NO')
14017 INTO vMultiServerPub
14018 FROM cz_db_settings
14019 WHERE UPPER(cz_db_settings.setting_id) = UPPER(MULTI_SERVER_PUB);
14020 END IF;
14021 EXCEPTION
14022 WHEN OTHERS
14023 THEN
14024 vMultiServerPub := 'NO';
14025 END;
14026
14027 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14028 -----procedureto to get single Publication Language from cz_db_settings. SUN ER
14029 PROCEDURE get_single_pb_language
14030 AS
14031 BEGIN
14032 IF (CZ_PB_MGR.v_session_parameter = PUB_MODEL)
14033 THEN
14034 SELECT UPPER(value)
14035 INTO vPubSingleLang
14036 FROM cz_db_settings
14037 WHERE UPPER(cz_db_settings.setting_id) = PUB_LANGUAGE;
14038 END IF;
14039 EXCEPTION
14040 WHEN OTHERS
14041 THEN
14042 vPubSingleLang := NULL;
14043 END;
14044
14045 -----procedureto to get Bulk Remote Publication from cz_db_settings.
14046 PROCEDURE get_remote_select_insert
14047 AS
14048 BEGIN
14049 IF (CZ_PB_MGR.v_session_parameter = PUB_MODEL)
14050 THEN
14051 SELECT UPPER(value)
14052 INTO vBulkSelectInsert
14053 FROM cz_db_settings
14054 WHERE cz_db_settings.setting_id = BULK_SELECT_INSERT;
14055 END IF;
14056 EXCEPTION
14057 WHEN OTHERS
14058 THEN
14059 vBulkSelectInsert := NULL;
14060 END;
14061
14062 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14063 -----procedure that uploads publication data
14064 ----@p_publication_id : publication request id on the source database
14065 PROCEDURE upload_publication_data(p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE)
14066 AS
14067 v_new_ui_def_id cz_model_publications.ui_def_id%TYPE;
14068 v_remote_model cz_model_publications.model_id%TYPE;
14069 v_prev_publication_id cz_model_publications.publication_id%TYPE;
14070 v_prev_export_status cz_model_publications.export_status%TYPE;
14071 BEGIN
14072 pbdebug := 22036;
14073 -------------update the status in cz_model_publications and model exports
14074 update_pb_status(p_publication_id, cz_pb_mgr.v_status_code, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code);
14075 ------------get new publication id for the target publication
14076 get_new_publication_id(p_publication_id
14077 ,cz_pb_mgr.v_cz_model_pub_old_id
14078 ,cz_pb_mgr.v_cz_model_pub_new_id
14079 ,cz_pb_mgr.remote_publication_id
14080 ,cz_pb_mgr.v_status_code
14081 );
14082 ------get new ui_def_id for the target publication
14083 get_new_ui_def_id(p_publication_id, cz_pb_mgr.v_cz_ui_defs_old_ref, cz_pb_mgr.v_cz_ui_defs_new_ref, v_new_ui_def_id, cz_pb_mgr.v_status_code);
14084
14085 -------get model id for target publication
14086 IF (g_object_type = MODEL_PUBLICATION) THEN
14087 get_new_model_id(p_publication_id, v_models_to_be_exported_new, v_remote_model, cz_pb_mgr.v_status_code);
14088 ELSE -- not supported
14089 get_new_model_id(p_publication_id, cz_pb_mgr.g_ui_templates_new_temp_id_ref, v_remote_model, cz_pb_mgr.v_status_code);
14090 END IF;
14091
14092 -----------get previous publication id and status
14093 get_prev_publication(cz_pb_mgr.v_ui_str
14094 ,cz_pb_mgr.v_session_parameter
14095 ,cz_pb_mgr.remote_publication_id
14096 ,v_prev_publication_id
14097 ,v_prev_export_status
14098 ,cz_pb_mgr.v_prev_remote_publication_id
14099 ,cz_pb_mgr.v_status_code
14100 );
14101 --------insert the new publication into cz_model_publications table of the target db
14102 insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
14103 ,cz_pb_mgr.v_cz_model_pub_old_id
14104 ,v_remote_model
14105 ,v_new_ui_def_id
14106 ,cz_pb_mgr.v_db_link
14107 ,'NEW'
14108 ,cz_pb_mgr.v_status_code
14109 );
14110
14111 ---------------- insert applicability parameters for tgt publication
14112 IF (g_object_type = MODEL_PUBLICATION)
14113 THEN
14114 insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
14115 ,cz_pb_mgr.v_cz_model_pub_old_id
14116 ,cz_pb_mgr.v_session_parameter
14117 ,cz_pb_mgr.v_db_link
14118 ,cz_pb_mgr.v_status_code
14119 );
14120 END IF;
14121
14122 ------reset status to the original if a re-publish fails
14123 IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP')
14124 THEN
14125 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
14126 THEN
14127 UPDATE cz_model_publications
14128 SET export_status = 'OK'
14129 WHERE publication_id = v_prev_publication_id;
14130 ELSE
14131 UPDATE cz_model_publications
14132 SET deleted_flag = '1'
14133 ,export_status = 'OK'
14134 WHERE publication_id = v_prev_publication_id;
14135
14136 EXECUTE IMMEDIATE 'BEGIN'
14137 || ' '
14138 || 'UPDATE cz_model_publications'
14139 || cz_pb_mgr.v_db_link
14140 || ' '
14141 || ' '
14142 || 'SET deleted_flag = ''1'','
14143 || ' '
14144 || 'export_status = ''OK'''
14145 || ' '
14146 || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
14147 || ' '
14148 || 'END;';
14149 END IF;
14150 END IF;
14151 EXCEPTION
14152 WHEN OTHERS
14153 THEN
14154 cz_pb_mgr.v_err_message := 'Error in upload of PUBLICATION schema for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
14155 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
14156 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14157 RAISE;
14158 END; /* end of upload of publication schema */
14159
14160 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14161 --Functions used for resolving effectuve usage mask
14162 FUNCTION hextodec(hexnum IN CHAR)
14163 RETURN NUMBER
14164 IS
14165 x NUMBER;
14166 digits NUMBER;
14167 RESULT NUMBER := 0;
14168 current_digit CHAR(1);
14169 current_digit_dec NUMBER;
14170 BEGIN
14171 digits := LENGTH(hexnum);
14172
14173 FOR x IN 1 .. digits
14174 LOOP
14175 current_digit := SUBSTR(hexnum, x, 1);
14176
14177 IF current_digit IN('A', 'B', 'C', 'D', 'E', 'F')
14178 THEN
14179 current_digit_dec := ASCII(current_digit) - ASCII('A') + 10;
14180 ELSE
14181 current_digit_dec := TO_NUMBER(current_digit);
14182 END IF;
14183
14184 RESULT := (RESULT * 16) + current_digit_dec;
14185 END LOOP;
14186
14187 RETURN RESULT;
14188 END hextodec;
14189
14190 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14191 FUNCTION hextobinary(hexnum IN CHAR)
14192 RETURN VARCHAR2
14193 IS
14194 RESULT VARCHAR2(4) := '';
14195 current_digit_dec NUMBER;
14196 BEGIN
14197 IF hexnum IN('A', 'B', 'C', 'D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f')
14198 THEN
14199 current_digit_dec := ASCII(UPPER(hexnum)) - ASCII('A') + 10;
14200 ELSE
14201 current_digit_dec := TO_NUMBER(hexnum);
14202 END IF;
14203
14204 LOOP
14205 RESULT := TO_CHAR(MOD(current_digit_dec, 2)) || RESULT;
14206 current_digit_dec := TRUNC(current_digit_dec / 2);
14207 EXIT WHEN(current_digit_dec < 1);
14208 END LOOP;
14209
14210 RESULT := LPAD(RESULT, 4, '0');
14211 RETURN RESULT;
14212 END hextobinary;
14213
14214 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14215 FUNCTION power_func(p_power IN NUMBER)
14216 RETURN NUMBER
14217 IS
14218 RESULT NUMBER := 1;
14219 BEGIN
14220 FOR x IN 1 .. p_power
14221 LOOP
14222 RESULT := RESULT * 2;
14223 END LOOP;
14224
14225 RETURN RESULT;
14226 END;
14227
14228 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14229 PROCEDURE getUsgNameArray(usagemap VARCHAR2, p_old_usage_name_to_id_map IN OUT NOCOPY cz_pb_mgr.t_usage_name)
14230 AS
14231 l_str VARCHAR2(1) := '';
14232 l_length NUMBER;
14233 l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
14234 l_bits VARCHAR2(64) := '';
14235 current_digit VARCHAR2(1);
14236 l_length1 NUMBER;
14237 l_cnt NUMBER := 0;
14238 l_name VARCHAR2(2000);
14239 l_id NUMBER;
14240 BEGIN
14241 l_length := LENGTH(usagemap);
14242
14243 FOR i IN 1 .. l_length
14244 LOOP
14245 current_digit := SUBSTR(usagemap, i, 1);
14246 l_length1 := LENGTH(l_bits);
14247 l_bits := l_bits || hextobinary(current_digit);
14248 END LOOP;
14249
14250 l_length := LENGTH(l_bits);
14251
14252 FOR i IN 1 .. l_length
14253 LOOP
14254 l_str := SUBSTR(l_bits, -i, 1);
14255
14256 IF (TO_NUMBER(l_str) = 1)
14257 THEN
14258 SELECT NAME, model_usage_id
14259 INTO l_name, l_id
14260 FROM cz_model_usages
14261 WHERE model_usage_id = l_cnt;
14262
14263 p_old_usage_name_to_id_map(l_cnt) := l_name;
14264 END IF;
14265
14266 l_cnt := l_cnt + 1;
14267 END LOOP;
14268 END getUsgNameArray;
14269
14270 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14271 PROCEDURE buildusagemask(usageid IN NUMBER, usagemask IN OUT NOCOPY VARCHAR2)
14272 AS
14273 l_str VARCHAR2(255) DEFAULT NULL;
14274 l_num NUMBER;
14275 l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
14276 BEGIN
14277 l_num := hextodec(usagemask) + power_func(usageid);
14278
14279 LOOP
14280 l_str := SUBSTR(l_hex, MOD(l_num, 16) + 1, 1) || l_str;
14281 l_num := TRUNC(l_num / 16);
14282 EXIT WHEN(l_num = 0);
14283 END LOOP;
14284
14285 usagemask := LPAD(l_str, 16, '0');
14286 END buildusagemask;
14287
14288 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14289 --procedure to resolve effective usage mask for ps nodes and rules.
14290 --Bug #5485126 - p_rules_flag should be 1 when the procedure is called for rules.
14291
14292 PROCEDURE resolve_effective_usage_mask(p_id_to_eff_usg_msk IN t_ref, p_rules_flag IN PLS_INTEGER)
14293 AS
14294 remote_usage ref_cursor;
14295 avail_usage_cur ref_cursor;
14296 -- We start with default mask.
14297 l_previous_mask VARCHAR2(16) := v_default_eff_usg_mask;
14298 l_avail_usage_id NUMBER;
14299 l_effective_usage VARCHAR2(2000);
14300 usageid NUMBER;
14301 l_usage_id cz_model_usages.model_usage_id%TYPE;
14302 l_usage_name cz_model_usages.NAME%TYPE;
14303 l_usage_desc cz_model_usages.description%TYPE;
14304 l_index_ps_to_eff NUMBER;
14305 l_index_usage_name_to_id NUMBER;
14306 l_count NUMBER;
14307 rec_count NUMBER := 0;
14308 l_str VARCHAR2(2000);
14309 BEGIN
14310 IF(p_rules_flag = 1)THEN
14311 cz_pb_mgr.v_new_rul_usg_msk_tbl.DELETE;
14312 ELSE
14313 cz_pb_mgr.v_new_eff_usg_msk_tbl.DELETE;
14314 END IF;
14315
14316 IF (p_id_to_eff_usg_msk.COUNT > 0)
14317 THEN
14318 FOR eff IN p_id_to_eff_usg_msk.FIRST .. p_id_to_eff_usg_msk.LAST
14319 LOOP
14320 rec_count := rec_count + 1;
14321
14322 --Bug #5485126 - if the p_rules_flag is set, use the rule usage mask array.
14323
14324 IF(p_rules_flag = 1)THEN
14325
14326 l_effective_usage := cz_pb_mgr.v_cz_rule_usage_mask_tbl(eff);
14327 ELSE
14328
14329 l_effective_usage := cz_pb_mgr.v_cz_effective_usage_mask_tbl(eff);
14330 END IF;
14331
14332 IF (l_effective_usage <> v_default_eff_usg_mask)
14333 THEN
14334 getUsgNameArray(l_effective_usage, cz_pb_mgr.v_old_usage_name_to_id_map);
14335 l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.FIRST;
14336
14337 WHILE(l_index_usage_name_to_id IS NOT NULL)
14338 LOOP
14339 l_usage_name := cz_pb_mgr.v_old_usage_name_to_id_map(l_index_usage_name_to_id);
14340 l_usage_id := NULL;
14341 l_usage_desc := NULL;
14342 -- At this point we will check if the usage is already been processed
14343 -- we will maintain two arrays
14344 -- 1. having list of all the usage name processed
14345 -- 2. usage name to new remote usage id that is commited.
14346 IF (cz_pb_mgr.g_usg_name_processed.COUNT = 0 OR (NOT cz_pb_mgr.g_usg_name_processed.EXISTS(l_usage_name))) THEN
14347 OPEN remote_usage FOR 'Select model_usage_id, name, description '
14348 || ' '
14349 || 'from cz_model_usages'
14350 || cz_pb_mgr.v_db_link
14351 || ' t'
14352 || ' '
14353 || 'where t.name = :1' USING l_usage_name;
14354
14355 FETCH remote_usage
14356 INTO l_usage_id, l_usage_name, l_usage_desc;
14357
14358 IF (l_usage_id IS NULL)
14359 THEN
14360 OPEN avail_usage_cur FOR 'select min(model_usage_id) from cz_model_usages' || cz_pb_mgr.v_db_link || 'where in_use=''X''';
14361
14362 FETCH avail_usage_cur
14363 INTO l_avail_usage_id;
14364
14365 IF (l_avail_usage_id is null)
14366 THEN
14367 --Raise migration failure.
14368 --Proposed: Usage Limit maxed out during the migration process.
14369 cz_pb_mgr.v_err_message :=
14370 cz_utils.get_text('CZDEV_MAX_USAGES_CREATED_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
14371 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.resolve_effective_usage_mask', SQLCODE);
14372 cz_pb_mgr.v_status_code := 0; -- MIGRATION_ERROR;
14373 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14374 RAISE NO_DATA_FOUND;
14375 ELSE
14376 l_usage_id := l_avail_usage_id;
14377 --Insert into cz_model_usages, use execute immediate
14378 l_str :=
14379 'update cz_model_usages'
14380 || cz_pb_mgr.v_db_link
14381 || ' '
14382 || 'set name = :1,'
14383 || ' '
14384 || 'description = :2,'
14385 || ' '
14386 || 'in_use = ''1'' '
14387 || ' '
14388 || 'where model_usage_id = :3';
14389
14390 EXECUTE IMMEDIATE l_str
14391 USING l_usage_name, l_usage_desc, l_avail_usage_id;
14392
14393 ----------insert into cz_rp_entries
14394 l_str :=
14395 'BEGIN
14396 insert into cz_rp_entries'
14397 || cz_pb_mgr.v_db_link
14398 || ' ( OBJECT_TYPE'
14399 || ' '
14400 || ',OBJECT_ID'
14401 || ' '
14402 || ',ENCLOSING_FOLDER'
14403 || ' '
14404 || ',NAME'
14405 || ' '
14406 || ',DESCRIPTION'
14407 || ' '
14408 || ',DELETED_FLAG'
14409 || ' '
14410 || ',SEEDED_FLAG'
14411 || ' '
14412 || ')'
14413 || ' '
14414 || 'VALUES ( ''USG'' '
14415 || ' '
14416 || ',:1'
14417 || ' '
14418 || ',:2'
14419 || ' '
14420 || ',:3'
14421 || ' '
14422 || ',:4'
14423 || ' '
14424 || ',''0'' '
14425 || ' '
14426 || ',''0'');'
14427 || ' '
14428 || 'commit;'
14429 || ' '
14430 || 'EXCEPTION'
14431 || ' '
14432 || 'WHEN OTHERS THEN'
14433 || ' '
14434 || 'update cz_rp_entries set deleted_flag = ''0'' where object_id = :1;'
14435 || ' '
14436 || 'END;';
14437
14438 EXECUTE IMMEDIATE l_str
14439 USING l_avail_usage_id, cz_pb_mgr.g_migration_tgt_folder_id, l_usage_name, l_usage_desc;
14440
14441 COMMIT;
14442 END IF;
14443 END IF;
14444 cz_pb_mgr.g_usg_name_processed(l_usage_name) := l_usage_id;
14445 END IF;
14446 l_usage_id := cz_pb_mgr.g_usg_name_processed(l_usage_name);
14447 buildusagemask(l_usage_id, l_previous_mask);
14448 l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.NEXT(l_index_usage_name_to_id);
14449 END LOOP;
14450
14451 IF(p_rules_flag = 1)THEN
14452 cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := l_previous_mask;
14453 ELSE
14454 cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := l_previous_mask;
14455 END IF;
14456
14457 --Add the new usage mask to the array_of_resolved_mask against the new ps_node_ids.
14458 l_previous_mask := v_default_eff_usg_mask;
14459 cz_pb_mgr.v_old_usage_name_to_id_map.DELETE;
14460 ELSE
14461 IF(p_rules_flag = 1)THEN
14462 cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
14463 ELSE
14464 cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
14465 END IF;
14466 END IF;
14467 END LOOP;
14468 END IF;
14469 END resolve_effective_usage_mask;
14470
14471 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14472 ------procedure to upload ps structure tree
14473 PROCEDURE upload_ps_structure(
14474 p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref
14475 ,p_export_flag IN OUT NOCOPY VARCHAR2
14476 ,x_status IN OUT NOCOPY VARCHAR2
14477 )
14478 AS
14479 v_project_count PLS_INTEGER := 0;
14480 rec_count PLS_INTEGER := 0;
14481 v_cz_model_ref_expls_new_tbl cz_pb_mgr.t_ref;
14482 v_cz_model_ref_expls_old_tbl cz_pb_mgr.t_ref;
14483 plsql_table_list cz_pb_mgr.col_plsql_table_list;
14484 BEGIN
14485 pbdebug := 22037;
14486
14487 ----logging process times
14488 IF (cz_pb_mgr.g_log_timing = publication_timing)
14489 THEN
14490 log_timing_message('start bulk collect of psnodes');
14491 END IF;
14492
14493 -- if model migration, the collection of ps_nodes related stuff has already happened
14494 -- before, so don't redo this.
14495 -- IF (p_models_for_export.COUNT > 0) THEN
14496 -- bulk collect of psnodes moved to mm_loadoldpsnodesforitems() ...
14497 -- END IF; -- end if of p_models_for_export > 0
14498 IF (cz_pb_mgr.g_log_timing = publication_timing)
14499 THEN
14500 log_timing_message('end bulk collect of psnodes');
14501 log_timing_message('start insert_eff_sets');
14502 END IF;
14503
14504 -------------populate effectivity sets table
14505 insert_eff_sets(cz_pb_mgr.v_ps_eff_set_id_tbl
14506 ,cz_pb_mgr.v_cz_eff_sets_old_tbl
14507 ,cz_pb_mgr.v_cz_eff_sets_new_tbl
14508 ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
14509 ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
14510 ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
14511 ,'Eff sets of ps nodes'
14512 );
14513 ------clear_tables('cz_rules','ref',cz_pb_mgr.v_status_code);
14514 -----bulk collect old and new rule ids
14515 bulk_collect_rules(p_export_flag
14516 ,cz_pb_mgr.v_models_to_be_exported
14517 ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
14518 ,cz_pb_mgr.v_cz_rules_rule_id_new_ref
14519 ,cz_pb_mgr.v_cz_rules_rule_id_idx_ref
14520 ,cz_pb_mgr.v_status_code
14521 );
14522
14523 IF (cz_pb_mgr.g_log_timing = publication_timing)
14524 THEN
14525 log_timing_message('end insert_eff_sets');
14526 log_timing_message('start eff sets of ps nodes');
14527 END IF;
14528
14529 -- resolve effective usage mask for rules
14530 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
14531 THEN
14532 resolve_effective_usage_mask(cz_pb_mgr.v_cz_rules_rule_id_old_ref, 1);
14533 END IF;
14534
14535 ---------resolve eff sets
14536 resolve_ids(cz_pb_mgr.v_ps_eff_set_id_tbl, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff sets of ps nodes');
14537
14538 IF (cz_pb_mgr.g_log_timing = publication_timing)
14539 THEN
14540 log_timing_message('end eff sets of ps nodes');
14541 END IF;
14542
14543 -------------insert intl texts for cz_ps_nodes
14544 IF (cz_pb_mgr.g_log_timing = publication_timing)
14545 THEN
14546 log_timing_message('start insert_intl_texts Intl Text of ps nodes');
14547 END IF;
14548
14549 insert_intl_texts(cz_pb_mgr.v_ps_intl_old_tbl, 'Intl Text of ps nodes');
14550
14551 IF (cz_pb_mgr.g_log_timing = publication_timing)
14552 THEN
14553 log_timing_message('end insert_intl_texts Intl Text of ps nodes');
14554 END IF;
14555
14556 IF (cz_pb_mgr.g_log_timing = publication_timing)
14557 THEN
14558 log_timing_message('start Intl Text of ps nodes');
14559 END IF;
14560
14561 resolve_intl_texts(cz_pb_mgr.v_ps_intl_old_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'intl texts of ps nodes');
14562
14563 IF (cz_pb_mgr.g_log_timing = publication_timing)
14564 THEN
14565 log_timing_message('end Intl Text of ps nodes');
14566 END IF;
14567
14568 -----insert violation text ids
14569 IF (cz_pb_mgr.g_log_timing = publication_timing)
14570 THEN
14571 log_timing_message('start insert_intl_texts Violation text of ps nodes');
14572 END IF;
14573
14574 insert_intl_texts(cz_pb_mgr.v_ps_viol_old_tbl, 'Violation text of ps nodes');
14575
14576 IF (cz_pb_mgr.g_log_timing = publication_timing)
14577 THEN
14578 log_timing_message('end insert_intl_texts Violation text of ps nodes');
14579 END IF;
14580
14581 -------resolve violation text ids
14582 IF (cz_pb_mgr.g_log_timing = publication_timing)
14583 THEN
14584 log_timing_message('start resolve_intl_texts Violation text of ps nodes');
14585 END IF;
14586
14587 resolve_intl_texts(cz_pb_mgr.v_ps_viol_old_tbl, cz_pb_mgr.v_cz_intl_text_idx_ref, 'violation texts of ps nodes');
14588
14589 IF (cz_pb_mgr.g_log_timing = publication_timing)
14590 THEN
14591 log_timing_message('end resolve_intl_texts Violation text of ps nodes');
14592 END IF;
14593
14594 -------resolve rule ids
14595 IF (cz_pb_mgr.g_log_timing = publication_timing)
14596 THEN
14597 log_timing_message('start resolve caption rule ids in ps nodes');
14598 END IF;
14599
14600 resolve_ids(cz_pb_mgr.v_ps_capt_rule_tbl, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'caption rule ids of ps nodes');
14601
14602 IF (cz_pb_mgr.g_log_timing = publication_timing)
14603 THEN
14604 log_timing_message('end resolve resolve caption rule ids in ps nodes');
14605 END IF;
14606
14607 ------------Resolving ps_ref_id of cz ps nodes
14608 IF (cz_pb_mgr.g_log_timing = publication_timing)
14609 THEN
14610 log_timing_message('start resolve_ids ps_ref_id of cz ps nodes');
14611 END IF;
14612
14613 -- non-exported psnodes actually loaded and put into the map too, so it would be better to load them early too
14614 -- then no special treatment needed for reference_id, component_id, etc
14615 resolve_ids(cz_pb_mgr.v_ps_refid_old_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'reference_id of cz ps nodes', FLD_PSN_REFERENCE_ID);
14616
14617 IF (cz_pb_mgr.g_log_timing = publication_timing)
14618 THEN
14619 log_timing_message('end resolve_ids ps_ref_id of cz ps nodes');
14620 END IF;
14621
14622 ------------Resolving component -ids of ps_nodes
14623 resolve_ids(cz_pb_mgr.v_cz_ps_nodes_comp_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component id of cz ps nodes', FLD_PSN_REFERENCE_ID);
14624
14625 -- resolve effective usage mask for ps nodes.
14626 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
14627 THEN
14628 resolve_effective_usage_mask(cz_pb_mgr.v_cz_ps_nodes_old_tbl, 0);
14629 END IF;
14630
14631 -- to verify: the model referred by reverse connector id would always be reexported regardless of having any
14632 -- change or not, if the model having the reverse connector is exported?
14633 -- otherwise, we need to implement resolver_ref_ids_not_found for this column and call that instead
14634 resolve_ids(cz_pb_mgr.g_ps_reverse_connector_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'psn reverse_connector_id');
14635
14636 plsql_table_list.DELETE;
14637 rec_count := 1;
14638 plsql_table_list(rec_count).col_name := 'ps_node_id';
14639 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_new_tbl';
14640 rec_count := rec_count + 1;
14641 plsql_table_list(rec_count).col_name := 'devl_project_id';
14642 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_devl_project_tbl';
14643 rec_count := rec_count + 1;
14644 plsql_table_list(rec_count).col_name := 'parent_id';
14645 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_parent_id_tbl';
14646 rec_count := rec_count + 1;
14647 plsql_table_list(rec_count).col_name := 'reference_id';
14648 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_refId_old_tbl';
14649 rec_count := rec_count + 1;
14650 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_eff_set_id_tbl';
14651 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
14652 rec_count := rec_count + 1;
14653 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_intl_old_tbl';
14654 plsql_table_list(rec_count).col_name := 'intl_text_id';
14655 rec_count := rec_count + 1;
14656 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_viol_old_tbl';
14657 plsql_table_list(rec_count).col_name := 'violation_text_id';
14658 rec_count := rec_count + 1;
14659 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_orig_sys_tbl';
14660 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
14661 rec_count := rec_count + 1;
14662 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_path_tbl';
14663 plsql_table_list(rec_count).col_name := 'component_sequence_path';
14664 rec_count := rec_count + 1;
14665 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_id_tbl';
14666 plsql_table_list(rec_count).col_name := 'component_sequence_id';
14667 rec_count := rec_count + 1;
14668 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_capt_rule_tbl';
14669 plsql_table_list(rec_count).col_name := 'displayname_capt_rule_id';
14670 rec_count := rec_count + 1;
14671 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_comp_tbl';
14672 plsql_table_list(rec_count).col_name := 'component_id';
14673 rec_count := rec_count + 1;
14674 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_uits_add_tbl';
14675 plsql_table_list(rec_count).col_name := 'UI_TIMESTAMP_ADD';
14676
14677 rec_count := rec_count + 1;
14678 plsql_table_list(rec_count).col_name := 'reverse_connector_id';
14679 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_reverse_connector_tbl';
14680
14681 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
14682 THEN
14683 rec_count := rec_count + 1;
14684 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_eff_usg_msk_tbl';
14685 plsql_table_list(rec_count).col_name := 'effective_usage_mask';
14686 mm_resync_ps_items;
14687 mm_resync_ps_item_types; --Bug9180063
14688 rec_count := rec_count + 1;
14689 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ps_item_id_tbl';
14690 plsql_table_list(rec_count).col_name := 'item_id';
14691 --Bug9180063 to include item_type_backptr during insertion of data into cz_ps_nodes
14692 rec_count := rec_count + 1;
14693 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ps_item_type_id_tbl';
14694 plsql_table_list(rec_count).col_name := 'item_type_backptr';
14695 END IF;
14696
14697 IF (cz_pb_mgr.g_log_timing = publication_timing)
14698 THEN
14699 log_timing_message('start insert_into_table of cz ps nodes');
14700 END IF;
14701
14702 insert_into_table('cz_ps_nodes'
14703 ,'ps_node_id'
14704 ,cz_pb_mgr.v_db_link
14705 ,plsql_table_list
14706 ,'cz_pb_mgr.v_cz_ps_nodes_old_tbl'
14707 ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
14708 );
14709
14710 IF (cz_pb_mgr.g_log_timing = publication_timing)
14711 THEN
14712 log_timing_message('end insert_into_table of cz ps nodes');
14713 END IF;
14714
14715 -----------update reference id of cz_ps_nodes of the target server for the models not exported
14716 IF (cz_pb_mgr.g_log_timing = publication_timing)
14717 THEN
14718 log_timing_message('start update_remote_reference_ids');
14719 END IF;
14720
14721 update_remote_reference_ids(cz_pb_mgr.v_models_not_to_be_exported
14722 ,cz_pb_mgr.v_cz_ps_nodes_new_tbl
14723 ,cz_pb_mgr.v_server_id
14724 ,cz_pb_mgr.v_status_code
14725 );
14726
14727 IF (cz_pb_mgr.g_log_timing = publication_timing)
14728 THEN
14729 log_timing_message('end update_remote_reference_ids');
14730 END IF;
14731
14732 --------------Populating cz_model_ref_expls table of the target database
14733 clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
14734
14735 IF (p_models_for_export.COUNT > 0)
14736 THEN
14737 IF (cz_pb_mgr.g_log_timing = publication_timing)
14738 THEN
14739 log_timing_message('start bulk collect of model_ref_expls');
14740 END IF;
14741
14742 FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
14743 LOOP
14744 v_cz_model_ref_expls_new_tbl.DELETE;
14745 v_cz_model_ref_expls_old_tbl.DELETE;
14746 clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
14747
14748 BEGIN
14749 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_ref_expls_seq
14750 , 'cz_model_ref_expls_s.nextval' || cz_pb_mgr.v_db_link
14751 ,cz_pb_mgr.v_oraclesequenceincr
14752 )
14753 ,model_ref_expl_id, component_id, parent_expl_node_id, child_model_expl_id
14754 ,referring_node_id, model_id
14755 BULK COLLECT INTO v_cz_model_ref_expls_new_tbl
14756 ,v_cz_model_ref_expls_old_tbl, cz_pb_mgr.v_component_id_old_tbl, cz_pb_mgr.v_parent_expl_id_tbl, cz_pb_mgr.v_child_expl_id_tbl
14757 ,cz_pb_mgr.v_referring_node_id_tbl, cz_pb_mgr.v_ref_model_id_tbl
14758 FROM cz_model_ref_expls t
14759 WHERE t.model_id = p_models_for_export(i) AND t.deleted_flag = '0';
14760 EXCEPTION
14761 WHEN OTHERS
14762 THEN
14763 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_ref_expls', 'SQLERRM', SQLERRM);
14764 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
14765 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14766 RAISE;
14767 END;
14768
14769 rec_count := cz_pb_mgr.v_cz_model_ref_expls_new_ref.COUNT;
14770
14771 IF (v_cz_model_ref_expls_new_tbl.COUNT > 0)
14772 THEN
14773 FOR k IN v_cz_model_ref_expls_new_tbl.FIRST .. v_cz_model_ref_expls_new_tbl.LAST
14774 LOOP
14775 rec_count := rec_count + 1;
14776 cz_pb_mgr.v_cz_model_ref_expls_new_ref(rec_count) := v_cz_model_ref_expls_new_tbl(k);
14777 cz_pb_mgr.v_cz_model_ref_expls_old_ref(rec_count) := v_cz_model_ref_expls_old_tbl(k);
14778 cz_pb_mgr.v_cz_model_ref_expls_idx_ref(v_cz_model_ref_expls_old_tbl(k)):=v_cz_model_ref_expls_new_tbl(k);
14779 cz_pb_mgr.v_component_id_old_ref(rec_count) := cz_pb_mgr.v_component_id_old_tbl(k);
14780 cz_pb_mgr.v_parent_expl_id_ref(rec_count) := cz_pb_mgr.v_parent_expl_id_tbl(k);
14781 cz_pb_mgr.v_child_expl_id_ref(rec_count) := cz_pb_mgr.v_child_expl_id_tbl(k);
14782 cz_pb_mgr.v_referring_node_id_ref(rec_count) := cz_pb_mgr.v_referring_node_id_tbl(k);
14783 cz_pb_mgr.v_ref_model_id_ref(rec_count) := cz_pb_mgr.v_ref_model_id_tbl(k);
14784 END LOOP;
14785 END IF;
14786 END LOOP; /* end loop of FOR I IN p_models_for_export */
14787 END IF; /* end if of p_models_for_export.COUNT > 0 */
14788
14789 IF (cz_pb_mgr.g_log_timing = publication_timing)
14790 THEN
14791 log_timing_message('end bulk collect of model_ref_expls');
14792 END IF;
14793
14794 ------------Resolve parent expl ids of model_ref_expls
14795 IF (cz_pb_mgr.g_log_timing = publication_timing)
14796 THEN
14797 log_timing_message('start resolve_ids parent ids of cz_model_ref_expls');
14798 END IF;
14799
14800 resolve_ids(cz_pb_mgr.v_parent_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'parent ids of cz_model_ref_expls');
14801
14802 IF (cz_pb_mgr.g_log_timing = publication_timing)
14803 THEN
14804 log_timing_message('end resolve_ids parent ids of cz_model_ref_expls');
14805 END IF;
14806
14807 -------------resolve model id of model_ref_expls
14808 IF (cz_pb_mgr.g_log_timing = publication_timing)
14809 THEN
14810 log_timing_message('start resolve_ids model id of cz_model_ref_expls');
14811 END IF;
14812
14813 resolve_ids(cz_pb_mgr.v_ref_model_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'model id of cz_model_ref_expls');
14814
14815 IF (cz_pb_mgr.g_log_timing = publication_timing)
14816 THEN
14817 log_timing_message('end resolve_ids model id of cz_model_ref_expls');
14818 END IF;
14819
14820 ----------resolving referring node ids of model ref expls
14821 IF (cz_pb_mgr.g_log_timing = publication_timing)
14822 THEN
14823 log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
14824 END IF;
14825
14826 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14827 ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
14828 ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
14829 ,cz_pb_mgr.v_referring_node_id_ref
14830 ,'cz_model_ref_expl.referring_node_id'
14831 ,cz_pb_mgr.v_status_code
14832 );
14833
14834 IF (cz_pb_mgr.g_log_timing = publication_timing)
14835 THEN
14836 log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
14837 END IF;
14838
14839 -----------resolve child expl ids
14840 IF (cz_pb_mgr.g_log_timing = publication_timing)
14841 THEN
14842 log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
14843 END IF;
14844
14845 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14846 ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
14847 ,cz_pb_mgr.v_cz_model_ref_expls_idx_ref
14848 ,cz_pb_mgr.v_child_expl_id_ref
14849 ,'cz_model_ref_expl.child_expl_id'
14850 ,cz_pb_mgr.v_status_code
14851 );
14852
14853 IF (cz_pb_mgr.g_log_timing = publication_timing)
14854 THEN
14855 log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
14856 END IF;
14857
14858 ----------resolving component_id of model ref expls
14859 IF (cz_pb_mgr.g_log_timing = publication_timing)
14860 THEN
14861 log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.component_id');
14862 END IF;
14863
14864 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14865 ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
14866 ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
14867 ,cz_pb_mgr.v_component_id_old_ref
14868 ,'cz_model_ref_expl.component_id'
14869 ,cz_pb_mgr.v_status_code
14870 );
14871
14872 IF (cz_pb_mgr.g_log_timing = publication_timing)
14873 THEN
14874 log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.component_id');
14875 END IF;
14876
14877 ----------populate target root model id
14878 IF (p_models_for_export.COUNT > 0)
14879 THEN
14880 FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
14881 LOOP
14882 IF (p_models_for_export(i) = cz_pb_mgr.v_root_model_id)
14883 THEN
14884 cz_pb_mgr.target_root_model_id := cz_pb_mgr.v_models_to_be_exported_new(i);
14885 EXIT;
14886 END IF;
14887 END LOOP;
14888 END IF;
14889
14890 --------populate plsql_table_list for model_ref_expls
14891 plsql_table_list.DELETE;
14892 rec_count := 1;
14893 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
14894 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_model_ref_expls_new_ref';
14895 rec_count := rec_count + 1;
14896 plsql_table_list(rec_count).col_name := 'parent_expl_node_id';
14897 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_parent_expl_id_ref';
14898 rec_count := rec_count + 1;
14899 plsql_table_list(rec_count).col_name := 'component_id';
14900 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_component_id_old_ref';
14901 rec_count := rec_count + 1;
14902 plsql_table_list(rec_count).col_name := 'model_id';
14903 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ref_model_id_ref';
14904 rec_count := rec_count + 1;
14905 plsql_table_list(rec_count).col_name := 'referring_node_id';
14906 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_referring_node_id_ref';
14907 rec_count := rec_count + 1;
14908 plsql_table_list(rec_count).col_name := 'child_model_expl_id';
14909 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_child_expl_id_ref';
14910
14911 IF (cz_pb_mgr.g_log_timing = publication_timing)
14912 THEN
14913 log_timing_message('start insert_into_table cz_model_ref_expls');
14914 END IF;
14915
14916 insert_into_table('cz_model_ref_expls'
14917 ,'model_ref_expl_id'
14918 ,cz_pb_mgr.v_db_link
14919 ,plsql_table_list
14920 ,'cz_pb_mgr.v_cz_model_ref_expls_old_ref'
14921 ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
14922 );
14923
14924 IF (cz_pb_mgr.g_log_timing = publication_timing)
14925 THEN
14926 log_timing_message('end insert_into_table cz_model_ref_expls');
14927 END IF;
14928
14929 -----------------------resolution of non virtual components
14930 IF (cz_pb_mgr.g_log_timing = publication_timing)
14931 THEN
14932 log_timing_message('start resolve_virtual_components');
14933 END IF;
14934
14935 resolve_virtual_components(cz_pb_mgr.v_cz_model_ref_expls_new_ref
14936 ,cz_pb_mgr.v_models_not_to_be_exported
14937 ,cz_pb_mgr.v_server_id
14938 ,cz_pb_mgr.v_status_code
14939 );
14940
14941 IF (cz_pb_mgr.g_log_timing = publication_timing)
14942 THEN
14943 log_timing_message('end resolve_virtual_components');
14944 END IF;
14945
14946 -------get func comp spec by expl id
14947 IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
14948 THEN
14949 collect_func_comp_specs;
14950 ELSIF(cz_pb_mgr.v_session_parameter = model_copy)
14951 THEN
14952 IF (cz_pb_mgr.copy_rules = 'YES')
14953 THEN
14954 collect_func_comp_specs;
14955 END IF;
14956 END IF;
14957
14958 ---------release local pl/sql tables
14959 v_cz_model_ref_expls_new_tbl.DELETE;
14960 v_cz_model_ref_expls_old_tbl.DELETE;
14961 EXCEPTION
14962 WHEN OTHERS
14963 THEN
14964 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14965 x_status := PUBLICATION_ERROR;
14966 RAISE pb_upload_ps_schema;
14967 END upload_ps_structure; /* end of export of product structure */
14968
14969 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14970 PROCEDURE insert_ui_node_props(p_ui_def_id_tbl IN cz_pb_mgr.t_ref)
14971 AS
14972 l_prop_node_tbl cz_pb_mgr.t_ref;
14973 l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
14974 l_rec_count NUMBER := 0;
14975 BEGIN
14976 IF p_ui_def_id_tbl.COUNT > 0
14977 THEN
14978 cz_pb_mgr.g_ui_node_prop_new_node_tbl.DELETE;
14979 cz_pb_mgr.g_ui_node_prop_old_node_tbl.DELETE;
14980 cz_pb_mgr.g_ui_node_prop_new_uidf_tbl.DELETE;
14981 cz_pb_mgr.g_ui_node_prop_old_uidf_tbl.DELETE;
14982
14983 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
14984 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14985 LOOP
14986 l_prop_node_tbl.DELETE;
14987
14988 SELECT DISTINCT prop.ui_node_id
14989 BULK COLLECT INTO l_prop_node_tbl
14990 FROM cz_ui_node_props prop, cz_ui_nodes node
14991 WHERE prop.ui_def_id = node.ui_def_id
14992 AND prop.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
14993 AND node.ui_node_id = prop.ui_node_id
14994 AND node.deleted_flag = record_not_deleted
14995 AND prop.deleted_flag = record_not_deleted;
14996
14997 IF l_prop_node_tbl.COUNT > 0
14998 THEN
14999 l_rec_count := cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT;
15000
15001 FOR j IN l_prop_node_tbl.FIRST .. l_prop_node_tbl.LAST
15002 LOOP
15003 l_rec_count := l_rec_count + 1;
15004 cz_pb_mgr.g_ui_node_prop_new_node_tbl(l_rec_count) := l_prop_node_tbl(j);
15005 cz_pb_mgr.g_ui_node_prop_old_node_tbl(l_rec_count) := l_prop_node_tbl(j);
15006 cz_pb_mgr.g_ui_node_prop_new_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
15007 cz_pb_mgr.g_ui_node_prop_old_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
15008 END LOOP;
15009 END IF;
15010 END LOOP;
15011 END IF;
15012
15013 IF cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT > 0
15014 THEN
15015 resolve_ids(cz_pb_mgr.g_ui_node_prop_new_node_tbl, cz_pb_mgr.v_cz_ui_nodes_idx_ref, 'ui node ids of ui node props');
15016 resolve_ids(cz_pb_mgr.g_ui_node_prop_new_uidf_tbl, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui node props');
15017 l_plsql_table_list(1).col_name := 'ui_node_id';
15018 l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_ui_node_prop_new_node_tbl';
15019 l_plsql_table_list(2).col_name := 'ui_def_id';
15020 l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_ui_node_prop_new_uidf_tbl';
15021 insert_into_table('cz_ui_node_props'
15022 ,'ui_node_id'
15023 ,'ui_def_id'
15024 ,cz_pb_mgr.v_db_link
15025 ,l_plsql_table_list
15026 ,'cz_pb_mgr.g_ui_node_prop_old_node_tbl'
15027 ,'cz_pb_mgr.g_ui_node_prop_old_uidf_tbl'
15028 ,cz_pb_mgr.g_ui_node_prop_old_node_tbl
15029 ,cz_pb_mgr.g_ui_node_prop_old_uidf_tbl
15030 );
15031 END IF;
15032 END IF;
15033
15034 COMMIT;
15035 EXCEPTION
15036 WHEN OTHERS
15037 THEN
15038 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_node_props', 'ERR', SQLERRM);
15039 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.NODEPROPS', SQLCODE);
15040 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15041 END insert_ui_node_props;
15042
15043 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15044 PROCEDURE synch_master_template
15045 AS
15046 remote_mt ref_cursor;
15047 rec_count NUMBER;
15048 l_mt_gen_id t_ref;
15049 l_mt_old_id t_ref;
15050 l_mt_name t_mt_name;
15051 l_mt_id NUMBER;
15052 mt_idx NUMBER;
15053 plsql_table_list cz_pb_mgr.col_plsql_table_list;
15054 l_rec_count NUMBER;
15055 BEGIN
15056 cz_pb_mgr.v_mt_name.DELETE;
15057 cz_pb_mgr.v_mt_name_ref.DELETE;
15058 cz_pb_mgr.v_mt_gen_id.DELETE;
15059 cz_pb_mgr.v_mt_old_id_tbl.DELETE;
15060 cz_pb_mgr.v_mt_old_only.DELETE;
15061 cz_pb_mgr.v_new_mt_id_ref.DELETE;
15062 cz_pb_mgr.v_new_mt_id_tbl.DELETE;
15063 cz_pb_mgr.g_mt_obj_type.DELETE;
15064
15065 -- Bug 5510573; 06-Sep-2006; kdande; Added a check to see if cz_pb_mgr.v_cz_ui_defs_old_ref has elements at all and then proceed
15066 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
15067 FOR ui IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15068 LOOP
15069 -- Andrew is going to provide with a query to fetch master template for given ui def id.
15070 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq, 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
15071 ,ui_def_id, NAME
15072 BULK COLLECT INTO l_mt_gen_id
15073 ,l_mt_old_id, l_mt_name
15074 FROM cz_ui_defs mstr
15075 WHERE mstr.deleted_flag = '0'
15076 AND mstr.master_template_flag = '1'
15077 AND mstr.seeded_flag = '0'
15078 AND EXISTS(SELECT 1
15079 FROM cz_ui_defs udf
15080 WHERE udf.from_master_template_id = mstr.ui_def_id AND ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(ui));
15081
15082 -- keep a running array for l_mt_names
15083 rec_count := v_mt_name.COUNT;
15084
15085 IF (l_mt_old_id.COUNT > 0)
15086 THEN
15087 FOR m IN l_mt_old_id.FIRST .. l_mt_old_id.LAST
15088 LOOP
15089 IF (cz_pb_mgr.v_mt_name_ref.COUNT = 0 OR NOT cz_pb_mgr.v_mt_name_ref.EXISTS(l_mt_name(m)))
15090 THEN
15091 rec_count := rec_count + 1;
15092 cz_pb_mgr.v_mt_name(rec_count) := l_mt_name(m);
15093 cz_pb_mgr.v_mt_name_ref(l_mt_name(m)) := m;
15094 cz_pb_mgr.v_mt_old_id_tbl(rec_count) := l_mt_old_id(m);
15095 cz_pb_mgr.v_mt_gen_id(rec_count) := l_mt_gen_id(m);
15096 END IF;
15097 END LOOP;
15098 END IF;
15099 END LOOP;
15100 END IF;
15101
15102 -- loop through the array list to check name on the remote server
15103 IF (cz_pb_mgr.v_mt_name.COUNT > 0)
15104 THEN
15105 rec_count := 0;
15106 cz_pb_mgr.v_mt_old_id_ref.DELETE;
15107
15108 FOR n IN cz_pb_mgr.v_mt_name.FIRST .. cz_pb_mgr.v_mt_name.LAST
15109 LOOP
15110 --IF ((cz_pb_mgr.v_new_mt_name_to_id_map.COUNT = 0) OR (NOT cz_pb_mgr.v_new_mt_name_to_id_map.exists(cz_pb_mgr.v_mt_name(N))) ) THEN
15111 l_mt_id := NULL;
15112 rec_count := rec_count + 1;
15113
15114 OPEN remote_mt FOR 'Select ui_def_id'
15115 || ' '
15116 || 'from cz_ui_defs'
15117 || cz_pb_mgr.v_db_link
15118 || 't'
15119 || ' '
15120 || 'where t.deleted_flag = ''0'' and t.master_template_flag = ''1'' and t.name = :1' USING cz_pb_mgr.v_mt_name(n);
15121
15122 FETCH remote_mt
15123 INTO l_mt_id;
15124
15125 IF (l_mt_id IS NOT NULL)
15126 THEN
15127 cz_pb_mgr.v_mt_old_to_new_id(cz_pb_mgr.v_mt_old_id_tbl(n)) := l_mt_id;
15128 cz_pb_mgr.v_mt_id_ref(rec_count) := l_mt_id;
15129 ELSE
15130 cz_pb_mgr.v_mt_old_to_new_id(cz_pb_mgr.v_mt_old_id_tbl(n)) := cz_pb_mgr.v_mt_gen_id(n);
15131 cz_pb_mgr.v_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
15132 cz_pb_mgr.v_new_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
15133 cz_pb_mgr.v_mt_old_id_ref(rec_count) := cz_pb_mgr.v_mt_old_id_tbl(n);
15134 END IF;
15135 --END IF;
15136 END LOOP;
15137
15138 rec_count := 0;
15139 cz_pb_mgr.g_mt_obj_type.DELETE;
15140 cz_pb_mgr.g_mt_enclosing_fld_rp_entry.DELETE;
15141 mt_idx := cz_pb_mgr.v_new_mt_id_ref.FIRST;
15142
15143 WHILE(mt_idx IS NOT NULL)
15144 LOOP
15145 rec_count := rec_count + 1;
15146 cz_pb_mgr.v_new_mt_id_tbl(rec_count) := cz_pb_mgr.v_new_mt_id_ref(mt_idx);
15147 cz_pb_mgr.g_mt_obj_type(rec_count) := 'UMT';
15148 cz_pb_mgr.g_mt_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
15149 mt_idx := cz_pb_mgr.v_new_mt_id_ref.NEXT(mt_idx);
15150 END LOOP;
15151
15152 IF (cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
15153 THEN
15154 --------populate plsql_table_list for ui_defs
15155 --null values in arrays will cause insert problems
15156 --so pack v_mt_old_id_ref into a non empty array
15157 --it can get into this situation where there are some m
15158 --master templates that need to migrated, but there are some that
15159 --don't need to be migrated.
15160 l_rec_count := 0;
15161
15162 IF (cz_pb_mgr.v_mt_old_id_ref.COUNT > 0) THEN
15163 FOR m IN cz_pb_mgr.v_mt_old_id_ref.FIRST .. cz_pb_mgr.v_mt_old_id_ref.LAST
15164 LOOP
15165 IF (cz_pb_mgr.v_mt_old_id_ref(m) IS NOT NULL)
15166 THEN
15167 l_rec_count := l_rec_count + 1;
15168 cz_pb_mgr.v_mt_old_only(l_rec_count) := cz_pb_mgr.v_mt_old_id_ref(m);
15169 END IF;
15170 END LOOP;
15171 END IF;
15172
15173 plsql_table_list.DELETE;
15174 rec_count := 1;
15175 plsql_table_list(rec_count).col_name := 'ui_def_id';
15176 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
15177 insert_into_table('cz_ui_defs', 'ui_def_id', cz_pb_mgr.v_db_link, plsql_table_list, 'cz_pb_mgr.v_mt_old_only', cz_pb_mgr.v_mt_old_only);
15178 ----------begin insert into cz_rp_entries----------------
15179 plsql_table_list.DELETE;
15180 rec_count := 1;
15181 plsql_table_list(rec_count).col_name := 'object_id';
15182 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
15183 rec_count := rec_count + 1;
15184 plsql_table_list(rec_count).col_name := 'object_type';
15185 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_obj_type';
15186 rec_count := rec_count + 1;
15187 plsql_table_list(rec_count).col_name := 'enclosing_folder';
15188 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_enclosing_fld_rp_entry';
15189 insert_into_rp_entries('cz_rp_entries'
15190 ,'object_id'
15191 ,'object_type'
15192 ,cz_pb_mgr.v_db_link
15193 ,plsql_table_list
15194 ,'cz_pb_mgr.v_mt_old_only'
15195 ,'cz_pb_mgr.g_mt_obj_type'
15196 ,cz_pb_mgr.v_mt_old_only
15197 ,cz_pb_mgr.g_mt_obj_type
15198 );
15199 ----------end insert into cz_rp_entries----------------
15200 END IF;
15201 END IF;
15202 END synch_master_template;
15203
15204 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15205 --------procedure that uploads UI schema
15206 PROCEDURE upload_ui_schema(p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2,
15207 p_copy_nonjradui IN BOOLEAN DEFAULT TRUE)
15208 AS
15209 plsql_table_list cz_pb_mgr.col_plsql_table_list;
15210 rec_count PLS_INTEGER := 0;
15211 v_ui_node_count PLS_INTEGER := 0;
15212 v_cz_ui_defs_old_tbl cz_pb_mgr.t_ref;
15213 v_ui_devl_id_tbl cz_pb_mgr.t_ref;
15214 v_ui_comp_id_tbl cz_pb_mgr.t_ref;
15215 v_ui_rf_id_tbl cz_pb_mgr.t_ref;
15216 v_cz_ui_nodes_new_tbl cz_pb_mgr.t_ref;
15217 v_cz_ui_nodes_old_tbl cz_pb_mgr.t_ref;
15218 v_cz_ui_nodes_ui_def_id_tbl cz_pb_mgr.t_ref;
15219 v_cz_ui_nodes_parent_id_tbl cz_pb_mgr.t_ref;
15220 v_cz_ui_nodes_ui_ref_id_tbl cz_pb_mgr.t_ref;
15221 v_cz_ui_nodes_ps_node_id_tbl cz_pb_mgr.t_ref;
15222 v_cz_ui_nodes_component_id_tbl cz_pb_mgr.t_ref;
15223 v_cz_ui_nodes_ui_dref_id_tbl cz_pb_mgr.t_ref;
15224 v_cz_ui_nodes_expl_id_tbl cz_pb_mgr.t_ref;
15225 v_cz_ui_nodes_fcomp_id_tbl cz_pb_mgr.t_ref;
15226 v_cz_ui_nodes_capt_id_tbl cz_pb_mgr.t_ref;
15227 v_cz_ui_nodes_tool_id_tbl cz_pb_mgr.t_ref;
15228 v_menu_capt_rule_tbl cz_pb_mgr.t_ref;
15229 v_page_capt_rule_tbl cz_pb_mgr.t_ref;
15230 l_from_mt_id_tbl cz_pb_mgr.t_ref;
15231 BEGIN
15232 pbdebug := 22038;
15233
15234 IF ((cz_pb_mgr.copy_uis <> 'YES') AND(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy))
15235 THEN
15236 cz_pb_mgr.v_root_ui_def_id := -999;
15237 END IF;
15238
15239 IF (cz_pb_mgr.g_log_timing = publication_timing)
15240 THEN
15241 log_timing_message('start bulk collect of ui defs');
15242 END IF;
15243
15244 IF ((cz_pb_mgr.v_root_ui_def_id IS NOT NULL) AND(cz_pb_mgr.v_root_ui_def_id <= 0))THEN RETURN; END IF;
15245
15246 clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
15247
15248 IF (p_models_for_export.COUNT > 0) THEN
15249 -- not copy non-jrad ui in any conversion session or in a copy session flagged by p_copy_nonjradui
15250 IF NOT (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 OR
15251 cz_pb_mgr.v_session_parameter=model_copy AND NOT p_copy_nonjradui) THEN
15252 get_source_uis(cz_pb_mgr.v_root_model_id, p_models_for_export, cz_pb_mgr.v_cz_ui_defs_old_ref);
15253 END IF;
15254 get_oa_uis(p_models_for_export, cz_pb_mgr.v_cz_ui_defs_old_ref, cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
15255
15256 --get_oa_tmpls is also called from has_to_be_published.
15257 --However, for model migration, has_to_be_published
15258 --is not called. So make the call to get_oa_tmpls here.
15259 IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0 THEN
15260 get_oa_tmpls;
15261 END IF;
15262
15263 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
15264 THEN
15265 rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
15266
15267 FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15268 LOOP
15269 rec_count := rec_count + 1;
15270 cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
15271 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq
15272 , 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link
15273 ,cz_pb_mgr.v_oraclesequenceincr
15274 );
15275 END LOOP;
15276 END IF; /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
15277 END IF;
15278
15279 IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
15280 THEN
15281 FOR m IN cz_pb_mgr.v_cz_ui_defs_new_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_new_ref.LAST
15282 LOOP
15283 cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.v_cz_ui_defs_old_ref(m)) := cz_pb_mgr.v_cz_ui_defs_new_ref(m);
15284 END LOOP;
15285 END IF;
15286
15287 get_uis_of_mdls_not_exported(cz_pb_mgr.v_models_not_to_be_exported,
15288 cz_pb_mgr.v_cz_ui_defs_idx_ref,
15289 cz_pb_mgr.v_server_id,
15290 cz_pb_mgr.v_status_code);
15291
15292 IF (cz_pb_mgr.g_log_timing = publication_timing)
15293 THEN
15294 log_timing_message('end bulk collect of ui defs');
15295 log_timing_message('start bulk collect of devl_project_ids and component_ids for ui_defs');
15296 END IF;
15297
15298 ---------get devl_project_ids and component_ids for ui_defs
15299 /* We should really re-architect this portion of the code
15300 we have already queried cz_ui_defs before for oa_style UIs in
15301 get_oa_uis and have the menu_caption_rule_id,page_caption_rule_id,
15302 from_master_template_id. We need to query it again here because
15303 we don't have these values for DHTML UIs and insert_into_table for
15304 cz_ui_defs will fail. We should consolidate the querying into one place.
15305 */
15306
15307 IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
15308 THEN
15309 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
15310 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15311 LOOP
15312 BEGIN
15313 v_ui_devl_id_tbl.DELETE;
15314 v_ui_comp_id_tbl.DELETE;
15315 v_ui_rf_id_tbl.DELETE;
15316
15317 SELECT devl_project_id, component_id, menu_caption_rule_id, page_caption_rule_id, cz_ui_defs.from_master_template_id
15318 BULK COLLECT INTO v_ui_devl_id_tbl, v_ui_comp_id_tbl, v_menu_capt_rule_tbl, v_page_capt_rule_tbl, l_from_mt_id_tbl
15319 FROM cz_ui_defs
15320 WHERE cz_ui_defs.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i) AND cz_ui_defs.deleted_flag = record_not_deleted;
15321
15322 rec_count := cz_pb_mgr.v_ui_devl_id_ref.COUNT;
15323
15324 IF (v_ui_devl_id_tbl.COUNT > 0)
15325 THEN
15326 FOR k IN v_ui_devl_id_tbl.FIRST .. v_ui_devl_id_tbl.LAST
15327 LOOP
15328 rec_count := rec_count + 1;
15329 cz_pb_mgr.v_ui_devl_id_ref(rec_count) := v_ui_devl_id_tbl(k);
15330 cz_pb_mgr.v_ui_comp_id_ref(rec_count) := v_ui_comp_id_tbl(k);
15331 cz_pb_mgr.v_ui_defs_mcpt_rule_ref(rec_count) := v_menu_capt_rule_tbl(k);
15332 cz_pb_mgr.v_ui_defs_pcpt_rule_ref(rec_count) := v_page_capt_rule_tbl(k);
15333 v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(k);
15334 END LOOP;
15335 END IF;
15336 EXCEPTION
15337 WHEN OTHERS
15338 THEN
15339 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_defs', 'SQLERRM', SQLERRM);
15340 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
15341 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15342 RAISE;
15343 END;
15344 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_ui_defs_old_ref */
15345 END IF;
15346 END IF; /* end if of cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0 */
15347
15348 IF (cz_pb_mgr.g_log_timing = publication_timing)
15349 THEN
15350 log_timing_message('end bulk collect of devl_project_ids and component_ids for ui_defs');
15351 log_timing_message('start resolve_ids devl project id of cz_ui_defs');
15352 END IF;
15353
15354 ----------resolve devl_project_ids
15355 resolve_ids(cz_pb_mgr.v_ui_devl_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl project id of cz_ui_defs');
15356
15357 IF (cz_pb_mgr.g_log_timing = publication_timing)
15358 THEN
15359 log_timing_message('end resolve_ids devl project id of cz_ui_defs');
15360 END IF;
15361
15362 ----------resolve component_ids
15363 IF (cz_pb_mgr.g_log_timing = publication_timing)
15364 THEN
15365 log_timing_message('start resolve_ids component id of cz_ui_defs');
15366 END IF;
15367
15368 resolve_ids(cz_pb_mgr.v_ui_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component id of cz_ui_defs');
15369
15370 IF (cz_pb_mgr.g_log_timing = publication_timing)
15371 THEN
15372 log_timing_message('end resolve_ids component id of cz_ui_defs');
15373 END IF;
15374
15375 ----------resolve component_ids of models not to be exported
15376 IF (cz_pb_mgr.g_log_timing = publication_timing)
15377 THEN
15378 log_timing_message('start component_ids of models not to be exported');
15379 END IF;
15380
15381 IF (cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0)
15382 THEN
15383 FOR k IN cz_pb_mgr.v_ui_comp_id_ref.FIRST .. cz_pb_mgr.v_ui_comp_id_ref.LAST
15384 LOOP
15385 remote_component_id(cz_pb_mgr.v_ui_comp_id_ref(k)
15386 ,cz_pb_mgr.v_models_not_to_be_exported
15387 ,cz_pb_mgr.v_server_id
15388 ,cz_pb_mgr.v_status_code
15389 );
15390 END LOOP;
15391 END IF; /* end if of cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0 */
15392
15393 IF (cz_pb_mgr.g_log_timing = publication_timing)
15394 THEN
15395 log_timing_message('end component_ids of models not to be exported');
15396 END IF;
15397
15398 resolve_ids(cz_pb_mgr.v_ui_defs_mcpt_rule_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'menu caption rule ids of ui defs');
15399 resolve_ids(cz_pb_mgr.v_ui_defs_pcpt_rule_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'page caption rule ids of ui defs');
15400
15401 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
15402 THEN
15403 synch_master_template;
15404 resolve_ids(cz_pb_mgr.v_master_template_id_ref, cz_pb_mgr.v_mt_old_to_new_id, 'from_master_template_id of uidef', ENTITY_TYPE_UMT);
15405 END IF;
15406
15407 --------populate plsql_table_list for ui_defs
15408 plsql_table_list.DELETE;
15409 rec_count := 1;
15410 plsql_table_list(rec_count).col_name := 'ui_def_id';
15411 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
15412 rec_count := rec_count + 1;
15413 plsql_table_list(rec_count).col_name := 'devl_project_id';
15414 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_devl_id_ref';
15415 rec_count := rec_count + 1;
15416 plsql_table_list(rec_count).col_name := 'component_id';
15417 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_comp_id_ref';
15418 rec_count := rec_count + 1;
15419 plsql_table_list(rec_count).col_name := 'menu_caption_rule_id';
15420 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_mcpt_rule_ref';
15421 rec_count := rec_count + 1;
15422 plsql_table_list(rec_count).col_name := 'page_caption_rule_id';
15423 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_pcpt_rule_ref';
15424
15425 ---------insert into cz_ui_defs of target server
15426 IF (cz_pb_mgr.g_log_timing = publication_timing)
15427 THEN
15428 log_timing_message('start insert_into_table cz_ui_defs');
15429 END IF;
15430
15431 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
15432 THEN
15433 rec_count := rec_count + 1;
15434 plsql_table_list(rec_count).col_name := 'from_master_template_id';
15435 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_master_template_id_ref';
15436 END IF;
15437
15438 insert_into_table('cz_ui_defs'
15439 ,'ui_def_id'
15440 ,cz_pb_mgr.v_db_link
15441 ,plsql_table_list
15442 ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
15443 ,cz_pb_mgr.v_cz_ui_defs_old_ref
15444 );
15445
15446 IF (cz_pb_mgr.g_log_timing = publication_timing)
15447 THEN
15448 log_timing_message('end insert_into_table cz_ui_defs');
15449 END IF;
15450
15451 ------export oa uis
15452 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0) THEN
15453 export_oa_uis;
15454 END IF;
15455
15456 --------populate plsql_table_list for ui_properties
15457 plsql_table_list.DELETE;
15458 rec_count := 1;
15459 plsql_table_list(rec_count).col_name := 'ui_def_id';
15460 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
15461
15462 ------------insert into cz_ui_properties of target server
15463 IF (cz_pb_mgr.g_log_timing = publication_timing)
15464 THEN
15465 log_timing_message('start insert_into_table cz_ui_properties');
15466 END IF;
15467
15468 insert_into_table('cz_ui_properties'
15469 ,'ui_def_id'
15470 ,cz_pb_mgr.v_db_link
15471 ,plsql_table_list
15472 ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
15473 ,cz_pb_mgr.v_cz_ui_defs_old_ref
15474 );
15475
15476 IF (cz_pb_mgr.g_log_timing = publication_timing)
15477 THEN
15478 log_timing_message('end insert_into_table cz_ui_properties');
15479 END IF;
15480
15481 ----------insert ids of cz_ui_nodes
15482 clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
15483
15484 IF (cz_pb_mgr.g_log_timing = publication_timing)
15485 THEN
15486 log_timing_message('start bulk collect of cz_ui_nodes');
15487 END IF;
15488
15489 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
15490 THEN
15491 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
15492 LOOP
15493 v_cz_ui_nodes_new_tbl.DELETE;
15494 v_cz_ui_nodes_old_tbl.DELETE;
15495 v_cz_ui_nodes_ui_def_id_tbl.DELETE;
15496 v_cz_ui_nodes_parent_id_tbl.DELETE;
15497 v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
15498 v_cz_ui_nodes_ps_node_id_tbl.DELETE;
15499 v_cz_ui_nodes_component_id_tbl.DELETE;
15500 v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
15501 v_cz_ui_nodes_expl_id_tbl.DELETE;
15502 v_cz_ui_nodes_fcomp_id_tbl.DELETE;
15503 v_cz_ui_nodes_capt_id_tbl.DELETE;
15504 v_cz_ui_nodes_tool_id_tbl.DELETE;
15505
15506 BEGIN
15507 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_nodes_seq
15508 , 'cz_ui_nodes_s.nextval' || cz_pb_mgr.v_db_link
15509 ,cz_pb_mgr.v_oraclesequenceincr
15510 )
15511 ,ui_node_id, ui_def_id, parent_id, ui_node_ref_id
15512 ,ui_def_ref_id, ps_node_id, component_id, model_ref_expl_id
15513 ,func_comp_id, caption_id, tool_tip_id
15514 BULK COLLECT INTO v_cz_ui_nodes_new_tbl
15515 ,v_cz_ui_nodes_old_tbl, v_cz_ui_nodes_ui_def_id_tbl, v_cz_ui_nodes_parent_id_tbl, v_cz_ui_nodes_ui_ref_id_tbl
15516 ,v_cz_ui_nodes_ui_dref_id_tbl, v_cz_ui_nodes_ps_node_id_tbl, v_cz_ui_nodes_component_id_tbl, v_cz_ui_nodes_expl_id_tbl
15517 ,v_cz_ui_nodes_fcomp_id_tbl, v_cz_ui_nodes_capt_id_tbl, v_cz_ui_nodes_tool_id_tbl
15518 FROM cz_ui_nodes
15519 WHERE cz_ui_nodes.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i) AND cz_ui_nodes.deleted_flag = record_not_deleted;
15520 EXCEPTION
15521 WHEN NO_DATA_FOUND
15522 THEN
15523 cz_pb_mgr.v_err_message := 'No ui nodes found for : ' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_old_ref(i));
15524 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODES', SQLCODE);
15525 WHEN OTHERS
15526 THEN
15527 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_nodes', 'SQLERRM', SQLERRM);
15528 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
15529 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15530 RAISE;
15531 END;
15532
15533 IF (v_cz_ui_nodes_new_tbl.COUNT > 0)
15534 THEN
15535 FOR k IN v_cz_ui_nodes_new_tbl.FIRST .. v_cz_ui_nodes_new_tbl.LAST
15536 LOOP
15537 v_ui_node_count := cz_pb_mgr.v_cz_ui_nodes_new_ref.COUNT + 1;
15538 cz_pb_mgr.v_cz_ui_nodes_new_ref(v_ui_node_count) := v_cz_ui_nodes_new_tbl(k);
15539 cz_pb_mgr.v_cz_ui_nodes_old_ref(v_ui_node_count) := v_cz_ui_nodes_old_tbl(k);
15540 cz_pb_mgr.v_cz_ui_nodes_idx_ref(v_cz_ui_nodes_old_tbl(k)):=v_cz_ui_nodes_new_tbl(k);
15541 cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_def_id_tbl(k);
15542 cz_pb_mgr.v_cz_ui_nodes_parent_id_ref(v_ui_node_count) := v_cz_ui_nodes_parent_id_tbl(k);
15543 cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_ref_id_tbl(k);
15544 cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref(v_ui_node_count) := v_cz_ui_nodes_ps_node_id_tbl(k);
15545 cz_pb_mgr.v_cz_ui_nodes_component_id_ref(v_ui_node_count) := v_cz_ui_nodes_component_id_tbl(k);
15546 cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_dref_id_tbl(k);
15547 cz_pb_mgr.v_cz_ui_nodes_expl_id_ref(v_ui_node_count) := v_cz_ui_nodes_expl_id_tbl(k);
15548 cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref(v_ui_node_count) := v_cz_ui_nodes_fcomp_id_tbl(k);
15549 cz_pb_mgr.v_cz_ui_nodes_capt_id_ref(v_ui_node_count) := v_cz_ui_nodes_capt_id_tbl(k);
15550 cz_pb_mgr.v_cz_ui_nodes_tool_id_ref(v_ui_node_count) := v_cz_ui_nodes_tool_id_tbl(k);
15551 END LOOP;
15552 END IF; /* end if of v_cz_ui_nodes_new_tbl.COUNT > 0 */
15553 END LOOP;
15554 END IF; /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
15555
15556 IF (cz_pb_mgr.g_log_timing = publication_timing)
15557 THEN
15558 log_timing_message('end bulk collect of cz_ui_nodes');
15559 END IF;
15560
15561 ----intl texts of ui nodes
15562 IF (cz_pb_mgr.g_log_timing = publication_timing)
15563 THEN
15564 log_timing_message('start insert_intl_texts caption ids of ui nodes');
15565 END IF;
15566
15567 insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_capt_id_ref, 'Caption ids of ui nodes');
15568
15569 IF (cz_pb_mgr.g_log_timing = publication_timing)
15570 THEN
15571 log_timing_message('end insert_intl_texts caption ids of ui nodes');
15572 END IF;
15573
15574 -----resolve caption ids
15575 IF (cz_pb_mgr.g_log_timing = publication_timing)
15576 THEN
15577 log_timing_message('start resolve_intl_texts caption ids of ui nodes');
15578 END IF;
15579
15580 resolve_intl_texts(cz_pb_mgr.v_cz_ui_nodes_capt_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'caption ids of ui nodes');
15581
15582 IF (cz_pb_mgr.g_log_timing = publication_timing)
15583 THEN
15584 log_timing_message('end resolve_intl_texts caption ids of ui nodes');
15585 END IF;
15586
15587 -----insert tool tip ids
15588 IF (cz_pb_mgr.g_log_timing = publication_timing)
15589 THEN
15590 log_timing_message('start insert_intl_texts Tool tip ids of ui nodes');
15591 END IF;
15592
15593 insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_tool_id_ref, 'Tool tip ids of ui nodes');
15594
15595 IF (cz_pb_mgr.g_log_timing = publication_timing)
15596 THEN
15597 log_timing_message('end insert_intl_texts Tool tip ids of ui nodes');
15598 END IF;
15599
15600 ---------resolve tool tip ids
15601 IF (cz_pb_mgr.g_log_timing = publication_timing)
15602 THEN
15603 log_timing_message('start resolve_intl_texts tool tip ids of ui nodes');
15604 END IF;
15605
15606 resolve_intl_texts(cz_pb_mgr.v_cz_ui_nodes_tool_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'tool tip ids of ui nodes');
15607
15608 IF (cz_pb_mgr.g_log_timing = publication_timing)
15609 THEN
15610 log_timing_message('end resolve_intl_texts tool tip ids of ui nodes');
15611 END IF;
15612
15613 ---------resolve ui def ids of ui nodes
15614 IF (cz_pb_mgr.g_log_timing = publication_timing)
15615 THEN
15616 log_timing_message('start resolve_ids ui def ids of ui nodes');
15617 END IF;
15618
15619 resolve_ids(cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def ids of ui nodes');
15620
15621 IF (cz_pb_mgr.g_log_timing = publication_timing)
15622 THEN
15623 log_timing_message('end resolve_ids ui def ids of ui nodes');
15624 END IF;
15625
15626 ---------resolve parent ids of ui nodes
15627 IF (cz_pb_mgr.g_log_timing = publication_timing)
15628 THEN
15629 log_timing_message('start resolve_ids parent ids of ui nodes');
15630 END IF;
15631
15632 resolve_ids(cz_pb_mgr.v_cz_ui_nodes_parent_id_ref, cz_pb_mgr.v_cz_ui_nodes_idx_ref, 'parent ids of ui nodes');
15633
15634 IF (cz_pb_mgr.g_log_timing = publication_timing)
15635 THEN
15636 log_timing_message('end resolve_ids parent ids of ui nodes');
15637 END IF;
15638
15639 ---------resolve ui node ref ids of ui nodes
15640 IF (cz_pb_mgr.g_log_timing = publication_timing)
15641 THEN
15642 log_timing_message('start resolve_ids ui node ref ids of ui nodes');
15643 END IF;
15644
15645 resolve_ids(cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref, cz_pb_mgr.v_cz_ui_nodes_idx_ref, 'ui node ref ids of ui nodes', FLD_IGNORE_NOW);
15646
15647 IF (cz_pb_mgr.g_log_timing = publication_timing)
15648 THEN
15649 log_timing_message('end resolve_ids ui node ref ids of ui nodes');
15650 END IF;
15651
15652 ---------resolve ps node ref ids of ui nodes
15653 IF (cz_pb_mgr.g_log_timing = publication_timing)
15654 THEN
15655 log_timing_message('start resolve_ids ps node ids of ui nodes');
15656 END IF;
15657
15658 resolve_ids(cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'ps node ids of ui nodes');
15659
15660 IF (cz_pb_mgr.g_log_timing = publication_timing)
15661 THEN
15662 log_timing_message('end resolve_ids ps node ids of ui nodes');
15663 END IF;
15664
15665 ---------resolve component ids of ui nodes
15666 IF (cz_pb_mgr.g_log_timing = publication_timing)
15667 THEN
15668 log_timing_message('start resolve_ids component ids of ui nodes');
15669 END IF;
15670
15671 resolve_ids(cz_pb_mgr.v_cz_ui_nodes_component_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component ids of ui nodes');
15672
15673 IF (cz_pb_mgr.g_log_timing = publication_timing)
15674 THEN
15675 log_timing_message('end resolve_ids component ids of ui nodes');
15676 log_timing_message('start resolve_ids model ref expl id of cz_ui nodes');
15677 END IF;
15678
15679 resolve_ids(cz_pb_mgr.v_cz_ui_nodes_expl_id_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of cz_ui nodes');
15680
15681 IF (cz_pb_mgr.g_log_timing = publication_timing)
15682 THEN
15683 log_timing_message('end resolve_ids model ref expl id of cz_ui nodes');
15684 log_timing_message('start resolve_ids func comp ids of ui nodes');
15685 END IF;
15686
15687 ---------resolve func comp ids of ui nodes
15688 resolve_ids(cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref, cz_pb_mgr.v_cz_func_comp_idx_ref, 'func comp ids of ui nodes');
15689
15690 IF (cz_pb_mgr.g_log_timing = publication_timing)
15691 THEN
15692 log_timing_message('end resolve_ids func comp ids of ui nodes');
15693 log_timing_message('start resolve_ref_ids_not_found');
15694 END IF;
15695
15696 ---------resolve ui_def_ref_id
15697 -- should call resolve_ids instead
15698 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_ui_nodes_new_ref
15699 ,cz_pb_mgr.v_cz_ui_defs_old_ref
15700 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
15701 ,cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref
15702 ,'cz_ui_nodes.ui_def_ref_id'
15703 ,cz_pb_mgr.v_status_code
15704 );
15705
15706 IF (cz_pb_mgr.g_log_timing = publication_timing)
15707 THEN
15708 log_timing_message('end resolve_ref_ids_not_found');
15709 log_timing_message('start resolve_remote_ui_nodes');
15710 END IF;
15711
15712 ----------resolve remote ui_node_ids
15713 resolve_remote_ui_nodes(cz_pb_mgr.v_cz_ui_nodes_new_ref
15714 ,cz_pb_mgr.v_models_not_to_be_exported
15715 ,cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref
15716 ,cz_pb_mgr.v_server_id
15717 ,cz_pb_mgr.v_status_code
15718 );
15719
15720 IF (cz_pb_mgr.g_log_timing = publication_timing)
15721 THEN
15722 log_timing_message('end resolve_remote_ui_nodes');
15723 END IF;
15724
15725 --------populate plsql_table_list for ui_nodes
15726 plsql_table_list.DELETE;
15727 rec_count := 1;
15728 plsql_table_list(rec_count).col_name := 'ui_node_id';
15729 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_new_ref';
15730 rec_count := rec_count + 1;
15731 plsql_table_list(rec_count).col_name := 'ui_def_id';
15732 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref';
15733 rec_count := rec_count + 1;
15734 plsql_table_list(rec_count).col_name := 'parent_id';
15735 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_parent_id_ref';
15736 rec_count := rec_count + 1;
15737 plsql_table_list(rec_count).col_name := 'component_id';
15738 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_component_id_ref';
15739 rec_count := rec_count + 1;
15740 plsql_table_list(rec_count).col_name := 'ps_node_id';
15741 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref';
15742 rec_count := rec_count + 1;
15743 plsql_table_list(rec_count).col_name := 'ui_node_ref_id';
15744 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref';
15745 rec_count := rec_count + 1;
15746 plsql_table_list(rec_count).col_name := 'ui_def_ref_id';
15747 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref';
15748 rec_count := rec_count + 1;
15749 plsql_table_list(rec_count).col_name := 'func_comp_id';
15750 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref';
15751 rec_count := rec_count + 1;
15752 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15753 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_expl_id_ref';
15754 rec_count := rec_count + 1;
15755 plsql_table_list(rec_count).col_name := 'caption_id';
15756 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_capt_id_ref';
15757 rec_count := rec_count + 1;
15758 plsql_table_list(rec_count).col_name := 'tool_tip_id';
15759 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_tool_id_ref';
15760
15761 IF (cz_pb_mgr.g_log_timing = publication_timing)
15762 THEN
15763 log_timing_message('start insert_into_table cz_ui_nodes');
15764 END IF;
15765
15766 -----------insert into cz_ui_nodes of target server
15767 insert_into_table('cz_ui_nodes'
15768 ,'ui_node_id'
15769 ,cz_pb_mgr.v_db_link
15770 ,plsql_table_list
15771 ,'cz_pb_mgr.v_cz_ui_nodes_old_ref'
15772 ,cz_pb_mgr.v_cz_ui_nodes_old_ref
15773 );
15774
15775 IF (cz_pb_mgr.g_log_timing = publication_timing)
15776 THEN
15777 log_timing_message('end insert_into_table cz_ui_nodes');
15778 END IF;
15779
15780 --------populate plsql_table_list for ui_node_props
15781 IF (cz_pb_mgr.g_log_timing = publication_timing)
15782 THEN
15783 log_timing_message('start insert_into_table cz_ui_node_props');
15784 END IF;
15785
15786 insert_ui_node_props(cz_pb_mgr.v_cz_ui_defs_old_ref);
15787
15788 IF (cz_pb_mgr.g_log_timing = publication_timing)
15789 THEN
15790 log_timing_message('end insert_into_table cz_ui_node_props');
15791 END IF;
15792
15793 -------------release local pl/sql tables
15794 v_cz_ui_nodes_new_tbl.DELETE;
15795 v_cz_ui_nodes_old_tbl.DELETE;
15796 v_cz_ui_nodes_ui_def_id_tbl.DELETE;
15797 v_cz_ui_nodes_parent_id_tbl.DELETE;
15798 v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
15799 v_cz_ui_nodes_ps_node_id_tbl.DELETE;
15800 v_cz_ui_nodes_component_id_tbl.DELETE;
15801 v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
15802 v_cz_ui_nodes_expl_id_tbl.DELETE;
15803 v_cz_ui_nodes_fcomp_id_tbl.DELETE;
15804
15805 EXCEPTION
15806 WHEN OTHERS
15807 THEN
15808 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
15809 x_status := PUBLICATION_ERROR;
15810 RAISE pb_upload_ui_schema;
15811 END upload_ui_schema; /* end of upload of UI schema */
15812
15813 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15814 --------procedure to upload item sub-schema
15815 PROCEDURE upload_item_schema(p_ps_nodes_array IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2)
15816 AS
15817 v_property_count PLS_INTEGER := 0;
15818 rec_count PLS_INTEGER := 0;
15819 v_remote_prop_tbl cz_pb_mgr.t_ref;
15820 l_data_type_tbl cz_pb_mgr.t_ref;
15821 l_def_num_value_tbl cz_pb_mgr.t_ref;
15822 l_old_psnode_id NUMBER;
15823 BEGIN
15824
15825 ------------------insert data into cz_ps_prop_vals
15826 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
15827 -------9812709-------------------------------------------------------------------------------------
15828 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15829 log_timing_message('vBulkSelectInsert value : ' || vBulkSelectInsert);
15830 END IF;
15831
15832 IF(vBulkSelectInsert = 'YES')THEN
15833
15834 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15835 log_timing_message('start bulk collect method remote_bulk_get_all_properties ');
15836 END IF;
15837
15838 remote_bulk_get_all_properties;
15839 ELSE
15840 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15841 log_timing_message('start bulk collect method get_all_properties');
15842 END IF;
15843
15844 get_all_properties;
15845 END IF;
15846
15847 IF (cz_pb_mgr.g_log_timing = publication_timing)
15848 THEN
15849 log_timing_message('end bulk collect from cz_psnode_propval_v');
15850 END IF;
15851
15852 IF (cz_pb_mgr.g_log_timing = publication_timing)
15853 THEN
15854 log_timing_message('start resolve psnodes of prop vals');
15855 END IF;
15856
15857 -----resolve psnodes of prop vals
15858 resolve_ids(cz_pb_mgr.v_prop_vals_node_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'ps node id of prop vals');
15859
15860 -- BUG 11685105 - update the structure with new ps_node_ids
15861 IF (cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0) THEN
15862 FOR k IN cz_pb_mgr.v_prop_vals_node_ref.FIRST .. cz_pb_mgr.v_prop_vals_node_ref.LAST
15863 LOOP
15864 cz_pb_mgr.v_psnode_propval_tbl(k).new_ps_node_id := cz_pb_mgr.v_prop_vals_node_ref(k);
15865 END LOOP;
15866 END IF;
15867 -- BUG 11685105
15868
15869 IF (cz_pb_mgr.g_log_timing = publication_timing)
15870 THEN
15871 log_timing_message('end resolve psnodes of prop vals');
15872 END IF;
15873
15874 ----resolve prop num value for translatable text props
15875 IF (cz_pb_mgr.g_log_timing = publication_timing)
15876 THEN
15877 log_timing_message('start resolve prop num value');
15878 END IF;
15879
15880 IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0 AND
15881 (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0)) THEN
15882 FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
15883 LOOP
15884 IF cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
15885 (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
15886 cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
15887 rec_count := rec_count + 1;
15888 cz_pb_mgr.v_prop_vals_intl_text_ref(rec_count) := cz_pb_mgr.v_prop_vals_data_num_ref(intltext);
15889 END IF;
15890 END LOOP;
15891 END IF;
15892
15893 IF (cz_pb_mgr.g_log_timing = publication_timing)
15894 THEN
15895 log_timing_message('end resolve prop num value');
15896 END IF;
15897
15898 /*insert tranlateable property related intls for publication or local migration. Remote Migration will be dealt separately*/
15899 -- v_prop_vals_intl_text_ref not used by remote migration
15900 IF cz_pb_mgr.v_prop_vals_intl_text_ref.COUNT > 0 THEN
15901
15902 IF (cz_pb_mgr.g_log_timing = publication_timing)
15903 THEN
15904 log_timing_message('start insert texts for prop num value');
15905 END IF;
15906
15907 -- Fix bug 11685105
15908 --insert_intl_texts(cz_pb_mgr.v_prop_vals_intl_text_ref, 'prop num value of cz prop vals');
15909 --Instead of cz_pb_mgr.v_prop_vals_intl_text_ref we will send cz_pb_mgr.v_prop_vals_data_num_ref
15910 --As the insert_intl_texts will check for the data type 8 and process it.
15911
15912 insert_intl_texts(cz_pb_mgr.v_prop_vals_data_num_ref, 'prop num value of cz prop vals');
15913
15914 IF (cz_pb_mgr.g_log_timing = publication_timing)
15915 THEN
15916 log_timing_message('end insert texts for prop num value');
15917 END IF;
15918
15919 IF (cz_pb_mgr.g_log_timing = publication_timing)
15920 THEN
15921 log_timing_message('start resolve cz_pb_mgr.v_prop_vals_data_num_ref');
15922 END IF;
15923
15924 IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0)
15925 THEN
15926 FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
15927 LOOP
15928 IF cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
15929 cz_pb_mgr.v_prop_vals_data_num_ref(intltext) IS NOT NULL AND
15930 (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
15931 cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
15932 IF (cz_pb_mgr.v_psnode_propval_tbl(intltext).new_property_num_value IS NOT NULL)
15933 THEN
15934 cz_pb_mgr.v_prop_vals_data_num_ref(intltext) := cz_pb_mgr.v_psnode_propval_tbl(intltext).new_property_num_value; -- BUG11685105
15935 ELSE
15936 cz_pb_mgr.v_prop_vals_data_num_ref(intltext) := cz_pb_mgr.v_cz_intl_text_idx_ref(cz_pb_mgr.v_prop_vals_data_num_ref(intltext));
15937 END IF;
15938 END IF;
15939 END LOOP;
15940 END IF;
15941 END IF;
15942
15943 IF (cz_pb_mgr.g_log_timing = publication_timing)
15944 THEN
15945 log_timing_message('end resolve cz_pb_mgr.v_prop_vals_data_num_ref');
15946 END IF;
15947
15948 IF (cz_pb_mgr.g_log_timing = publication_timing)
15949 THEN
15950 log_timing_message('start insert_into_ps_prop_vals');
15951 END IF;
15952
15953 -- If this is remote model migration, we need to synchronize the properties before
15954 -- we insert into the target machine
15955 -- that will be done as part of insert item schema
15956 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0) THEN
15957 ------insert into cz_ps_prop_vals
15958 ------Srinik---------------------------------------
15959
15960 IF cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model THEN
15961
15962 IF(vBulkSelectInsert = 'YES')THEN
15963 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15964 log_timing_message('start bulk remote bulk insert remote_insert_into_ps_prop_vals; ');
15965 END IF;
15966
15967 rm_insert_into_ps_prop_vals;
15968 ELSE
15969 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
15970 log_timing_message('start normal insert procedure calling insert_into_ps_prop_vals');
15971 END IF;
15972 insert_into_ps_prop_vals;
15973
15974 END IF;
15975
15976 ELSE
15977 mc_insert_pspropvals;
15978
15979 END IF;
15980
15981 IF (cz_pb_mgr.g_log_timing = publication_timing)
15982 THEN
15983 log_timing_message('end insert_into_ps_prop_vals');
15984 END IF;
15985
15986 ---------release pl/sql tables
15987 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
15988 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
15989 END IF;
15990
15991 ------------ populate item sub schema
15992 IF (cz_pb_mgr.v_server_id <> 0)
15993 THEN
15994 insert_item_schema;
15995
15996 -- if model migration, the tables were not cleared before,
15997 -- they are being taken care of at this stage
15998 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
15999 THEN
16000 ---------release pl/sql tables
16001 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
16002 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
16003 END IF;
16004
16005 ----------refresh model usages
16006 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
16007 THEN
16008 load_usages;
16009 END IF;
16010
16011 ---------delete pl/sql tables
16012 clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
16013 clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
16014 END IF; /* end if of cz_pb_mgr.v_server_id <> 0 */
16015 EXCEPTION
16016 WHEN OTHERS
16017 THEN
16018 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
16019 x_status := PUBLICATION_ERROR;
16020 RAISE pb_upload_item_schema;
16021 END upload_item_schema; /* end of upload of ITEM schema */
16022
16023 --------------------------------------------------------------------------------
16024 PROCEDURE copy_fce_files IS
16025 l_oldid_tbl t_ref;
16026 l_newid_tbl t_ref;
16027 l_comid_tbl t_ref;
16028 l_count PLS_INTEGER := 0;
16029 l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
16030 BEGIN
16031 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
16032 l_newid_tbl.DELETE;
16033 l_oldid_tbl.DELETE;
16034 l_comid_tbl.DELETE;
16035
16036 SELECT cz_pb_mgr.sequence_generate(CZ_FCE_FILES_SEQ
16037 ,'CZ_FCE_FILES_S.NEXTVAL' || cz_pb_mgr.v_db_link
16038 ,cz_pb_mgr.v_oraclesequenceincr
16039 ),
16040 fce_file_id, component_id
16041 BULK COLLECT INTO l_newid_tbl, l_oldid_tbl, l_comid_tbl
16042 FROM cz_fce_files
16043 WHERE deleted_flag = '0' AND component_id = cz_pb_mgr.v_models_to_be_exported(i);
16044
16045 IF l_newid_tbl.COUNT > 0 THEN
16046 FOR j IN l_newid_tbl.FIRST .. l_newid_tbl.LAST LOOP
16047 l_count := l_count + 1;
16048 cz_pb_mgr.g_fcefile_new_id_tbl(l_count) := l_newid_tbl(j);
16049 cz_pb_mgr.g_fcefile_old_id_tbl(l_count) := l_oldid_tbl(j);
16050 cz_pb_mgr.g_fcefile_compid_tbl(l_count) := l_comid_tbl(j);
16051 END LOOP;
16052 END IF;
16053 END LOOP;
16054
16055 resolve_ids(cz_pb_mgr.g_fcefile_compid_tbl,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'component id of fce files');
16056
16057 l_plsql_table_list(1).col_name := 'FCE_FILE_ID';
16058 l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_fcefile_new_id_tbl';
16059 l_plsql_table_list(2).col_name := 'COMPONENT_ID';
16060 l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_fcefile_compid_tbl';
16061
16062 insert_into_table('CZ_FCE_FILES'
16063 ,'FCE_FILE_ID'
16064 , cz_pb_mgr.v_db_link
16065 , l_plsql_table_list
16066 ,'cz_pb_mgr.g_fcefile_old_id_tbl'
16067 , cz_pb_mgr.g_fcefile_old_id_tbl
16068 );
16069 END copy_fce_files;
16070
16071 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16072 -----procedure to insert rules
16073 PROCEDURE insert_rules(p_copy_rules_flag IN VARCHAR2, p_model_root_folder_map IN cz_pb_mgr.t_ref_idx_vc2)
16074 IS
16075 plsql_table_list cz_pb_mgr.col_plsql_table_list;
16076 rec_count NUMBER := 0;
16077 BEGIN
16078 ---------------reason id of cz rules
16079 insert_intl_texts(cz_pb_mgr.v_cz_rules_rea_id_ref, 'Reason ids of cz rules');
16080 --------resolve reason ids
16081 resolve_intl_texts(cz_pb_mgr.v_cz_rules_rea_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'reason id of cz rules');
16082
16083 ---------------unsatisfied message of cz rules
16084 insert_intl_texts(cz_pb_mgr.v_cz_rules_unmsg_id_ref, 'Unsatisfied message ids of cz rules');
16085 ---------resolve unsatisfied message ids
16086 resolve_intl_texts(cz_pb_mgr.v_cz_rules_unmsg_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'unmsg id of cz rules');
16087
16088 ------------populate effectivity set ids for cz rules
16089 insert_eff_sets(cz_pb_mgr.v_cz_rules_eff_id_ref
16090 ,cz_pb_mgr.v_cz_eff_sets_old_tbl
16091 ,cz_pb_mgr.v_cz_eff_sets_new_tbl
16092 ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
16093 ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
16094 ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
16095 ,'Eff sets of cz rules'
16096 );
16097
16098 export_signatures(cz_pb_mgr.v_cz_rules_sig_ref);
16099 -------------Resolve sig id of cz_rules
16100 resolve_ids(cz_pb_mgr.v_cz_rules_sig_ref, cz_pb_mgr.v_sig_idx_ref, 'sig id of cz rules', ENTITY_TYPE_SIGNATURE);
16101 ----------resolve_eff_sets;
16102 resolve_ids(cz_pb_mgr.v_cz_rules_eff_id_ref, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff sets of cz rules');
16103
16104 -------------Resolve rule_folder_id of cz_rules
16105 -- if copy rule db setting is not yes, publishing still copies CXs and FCs but only copies
16106 -- the root rule folder of a model, so we will put such rules under root folder in tgt model
16107 -- note we do not want to leave rule folders unresolved because it may cause problem in developer
16108 IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
16109 FOR i IN cz_pb_mgr.v_cz_rules_rf_id_ref.FIRST .. cz_pb_mgr.v_cz_rules_rf_id_ref.LAST LOOP
16110 IF cz_pb_mgr.v_cz_rules_rf_id_ref(i)<>0 THEN
16111 cz_pb_mgr.v_cz_rules_rf_id_ref(i):=p_model_root_folder_map(cz_pb_mgr.v_cz_rules_proj_id_ref(i));
16112 END IF;
16113 END LOOP;
16114 END IF;
16115 resolve_ids(cz_pb_mgr.v_cz_rules_rf_id_ref, cz_pb_mgr.v_cz_folders_id_idx_ref, 'rule folder ids of cz rules');
16116
16117 -------------Resolve devl_project_id of cz_rules
16118 resolve_ids(cz_pb_mgr.v_cz_rules_proj_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl_project_id of cz rules');
16119 -------------Resolve component_id of cz_rules
16120 resolve_ids(cz_pb_mgr.v_cz_rules_comp_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component_id of cz rules', FLD_RULE_COMPONENT_ID);
16121
16122 -------------Resolve expl id of cz_rules
16123 resolve_ids(cz_pb_mgr.v_cz_rules_expl_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'expl id of cz rules');
16124 resolve_ids(cz_pb_mgr.v_cz_rules_ui_ref, cz_pb_mgr.v_cz_ui_defs_idx_ref, 'ui def id of cz rules');
16125 -------------populate plsql_table_list for cz rules
16126 plsql_table_list.DELETE;
16127 rec_count := 1;
16128 plsql_table_list(rec_count).col_name := 'rule_id';
16129 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
16130 rec_count := rec_count + 1;
16131 plsql_table_list(rec_count).col_name := 'rule_folder_id';
16132 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
16133 rec_count := rec_count + 1;
16134 plsql_table_list(rec_count).col_name := 'devl_project_id';
16135 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
16136 rec_count := rec_count + 1;
16137 plsql_table_list(rec_count).col_name := 'component_id';
16138 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_comp_id_ref';
16139 rec_count := rec_count + 1;
16140 plsql_table_list(rec_count).col_name := 'reason_id';
16141 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rea_id_ref';
16142 rec_count := rec_count + 1;
16143 plsql_table_list(rec_count).col_name := 'unsatisfied_msg_id';
16144 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_unmsg_id_ref';
16145 rec_count := rec_count + 1;
16146 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
16147 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
16148 rec_count := rec_count + 1;
16149 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
16150 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_expl_ref';
16151 rec_count := rec_count + 1;
16152 plsql_table_list(rec_count).col_name := 'signature_id';
16153 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_sig_ref';
16154 rec_count := rec_count + 1;
16155 plsql_table_list(rec_count).col_name := 'ui_def_id';
16156 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_ui_ref';
16157 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
16158 rec_count := rec_count + 1;
16159 plsql_table_list(rec_count).col_name := 'effective_usage_mask';
16160 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_rul_usg_msk_tbl';
16161 rec_count := rec_count + 1;
16162 plsql_table_list(rec_count).col_name := 'persistent_rule_id';
16163 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_persistent_id_ref';
16164 END IF;
16165
16166 ------populate cz_rules
16167 insert_into_table('cz_rules'
16168 ,'rule_id'
16169 ,cz_pb_mgr.v_db_link
16170 ,plsql_table_list
16171 ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
16172 ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
16173 );
16174
16175 -----insert new records into cz_rule_folders
16176 plsql_table_list.DELETE;
16177 rec_count := 1;
16178 plsql_table_list(rec_count).col_name := 'rule_folder_id';
16179 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
16180 rec_count := rec_count + 1;
16181 plsql_table_list(rec_count).col_name := 'object_type';
16182 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_obj_ref';
16183 rec_count := rec_count + 1;
16184 plsql_table_list(rec_count).col_name := 'devl_project_id';
16185 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
16186 rec_count := rec_count + 1;
16187 plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
16188 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
16189 rec_count := rec_count + 1;
16190 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
16191 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
16192 ----------insert into cz_func_comp_specs
16193 insert_into_table('cz_rule_folders'
16194 ,'rule_folder_id'
16195 ,'object_type'
16196 ,cz_pb_mgr.v_db_link
16197 ,plsql_table_list
16198 ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
16199 ,'cz_pb_mgr.v_cz_rules_obj_ref'
16200 ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
16201 ,cz_pb_mgr.v_cz_rules_obj_ref
16202 );
16203 END insert_rules;
16204
16205 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16206 PROCEDURE bulk_collect_archives
16207 IS
16208 l_archive_refs_tbl cz_pb_mgr.t_ref;
16209 l_archive_id_tbl cz_pb_mgr.t_ref;
16210 l_devl_proj_tbl cz_pb_mgr.t_ref;
16211 rec_count NUMBER := 0;
16212 l_archive_count NUMBER := 0;
16213 BEGIN
16214 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16215 THEN
16216 cz_pb_mgr.g_archive_id_old_ref.DELETE;
16217 cz_pb_mgr.g_devl_proj_ref.DELETE;
16218 cz_pb_mgr.g_devl_proj_old_ref.DELETE;
16219 cz_pb_mgr.g_archive_id_ref.DELETE;
16220 cz_pb_mgr.g_archives_idx_ref.DELETE;
16221
16222 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16223 LOOP
16224 l_archive_refs_tbl.DELETE;
16225 l_devl_proj_tbl.DELETE;
16226
16227 BEGIN
16228 SELECT archive_id, devl_project_id
16229 BULK COLLECT INTO l_archive_refs_tbl, l_devl_proj_tbl
16230 FROM cz_archive_refs
16231 WHERE cz_archive_refs.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_archive_refs.deleted_flag = record_not_deleted;
16232 EXCEPTION
16233 WHEN NO_DATA_FOUND
16234 THEN
16235 NULL;
16236 END;
16237
16238 IF (l_archive_refs_tbl.COUNT > 0)
16239 THEN
16240 rec_count := cz_pb_mgr.g_archive_id_old_ref.COUNT;
16241
16242 FOR j IN l_archive_refs_tbl.FIRST .. l_archive_refs_tbl.LAST
16243 LOOP
16244 rec_count := rec_count + 1;
16245 --cz_pb_mgr.g_archive_id_ref(rec_count) := l_archive_refs_tbl(j);
16246 cz_pb_mgr.g_archive_id_old_ref(rec_count) := l_archive_refs_tbl(j);
16247 cz_pb_mgr.g_devl_proj_ref(rec_count) := l_devl_proj_tbl(j);
16248 cz_pb_mgr.g_devl_proj_old_ref(rec_count) := l_devl_proj_tbl(j);
16249 END LOOP;
16250 END IF;
16251 END LOOP;
16252 END IF;
16253 EXCEPTION
16254 WHEN OTHERS
16255 THEN
16256 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_archive_refs', 'SQLERRM', SQLERRM);
16257 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ARCHIVES', SQLCODE);
16258 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16259 RAISE;
16260 END bulk_collect_archives;
16261
16262 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16263 PROCEDURE export_archives
16264 IS
16265 l_archives_tbl t_ref;
16266 l_old_archives_tbl t_ref;
16267 plsql_table_list cz_pb_mgr.col_plsql_table_list;
16268 rec_count NUMBER := 0;
16269 BEGIN
16270 bulk_collect_archives;
16271 cz_pb_mgr.g_archives_old_ref.DELETE;
16272 cz_pb_mgr.g_archives_new_ref.DELETE;
16273 cz_pb_mgr.g_archives_idx_ref.DELETE;
16274
16275 IF (cz_pb_mgr.g_archive_id_old_ref.COUNT > 0)
16276 THEN
16277 FOR i IN cz_pb_mgr.g_archive_id_old_ref.FIRST .. cz_pb_mgr.g_archive_id_old_ref.LAST
16278 LOOP
16279 l_old_archives_tbl.DELETE;
16280 l_archives_tbl.DELETE;
16281
16282 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_archives_seq
16283 , 'cz_archives_s.nextval' || cz_pb_mgr.v_db_link
16284 ,cz_pb_mgr.v_oraclesequenceincr
16285 )
16286 ,archive_id
16287 BULK COLLECT INTO l_archives_tbl
16288 ,l_old_archives_tbl
16289 FROM cz_archives
16290 WHERE cz_archives.archive_id = cz_pb_mgr.g_archive_id_old_ref(i) AND cz_archives.deleted_flag = record_not_deleted;
16291
16292 IF (l_archives_tbl.COUNT > 0)
16293 THEN
16294 FOR j IN l_archives_tbl.FIRST .. l_archives_tbl.LAST
16295 LOOP
16296 rec_count := cz_pb_mgr.g_archives_new_ref.COUNT + 1;
16297 cz_pb_mgr.g_archives_new_ref(rec_count) := l_archives_tbl(j);
16298 cz_pb_mgr.g_archives_idx_ref(cz_pb_mgr.g_archive_id_old_ref(i)) := l_archives_tbl(j);
16299 cz_pb_mgr.g_archives_old_ref(rec_count) := l_old_archives_tbl(j);
16300 END LOOP;
16301 END IF;
16302 END LOOP;
16303
16304 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16305 THEN
16306 mm_sync_archives;
16307 -- resolve the array to only those that need to be inserted
16308 END IF;
16309
16310 IF (cz_pb_mgr.v_session_parameter <> model_copy AND cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
16311 THEN
16312 resolve_ids(cz_pb_mgr.g_archive_id_old_ref,cz_pb_mgr.g_archive_id_ref, cz_pb_mgr.g_archives_idx_ref, 'resolve archive id of archives');
16313
16314 ELSE
16315 rec_count:=0;
16316 FOR I IN cz_pb_mgr.g_archive_id_old_ref.FIRST..cz_pb_mgr.g_archive_id_old_ref.LAST
16317 LOOP
16318 rec_count:=rec_count+1;
16319 cz_pb_mgr.g_archive_id_ref(rec_count):=cz_pb_mgr.g_archive_id_old_ref(i);
16320 END LOOP;
16321 END IF;
16322
16323 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16324 THEN
16325 mm_insert_archives;
16326 ELSE
16327 mm_insert_archives_for_pb;
16328 END IF;
16329
16330 IF (cz_pb_mgr.g_log_timing = publication_timing)
16331 THEN
16332 log_timing_message('end insert_into_table cz_archives');
16333 END IF;
16334 END IF;
16335 EXCEPTION
16336 WHEN OTHERS
16337 THEN
16338 RAISE;
16339 END export_archives;
16340
16341 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16342 PROCEDURE export_populators
16343 IS
16344 l_filter_sets_id_tbl cz_pb_mgr.t_ref;
16345 l_filter_sets_devl_tbl cz_pb_mgr.t_ref;
16346 l_filter_sets_rule_tbl cz_pb_mgr.t_ref;
16347 l_filter_sets_new_id_tbl cz_pb_mgr.t_ref;
16348 l_populators_new_id_tbl cz_pb_mgr.t_ref;
16349 l_populators_id_tbl cz_pb_mgr.t_ref;
16350 l_populators_node_tbl cz_pb_mgr.t_ref;
16351 l_populators_set_id_tbl cz_pb_mgr.t_ref;
16352 rec_flt_count NUMBER := 0;
16353 rec_pop_count NUMBER := 0;
16354 rec_count PLS_INTEGER := 0;
16355 plsql_table_list cz_pb_mgr.col_plsql_table_list;
16356 BEGIN
16357 IF ((cz_pb_mgr.v_session_parameter IN(model_copy, cz_model_migration_pvt.migrate_model)) AND(cz_pb_mgr.v_models_to_be_exported.COUNT > 0))
16358 THEN
16359 cz_pb_mgr.v_filter_sets_new_id_ref.DELETE;
16360 cz_pb_mgr.v_filter_sets_id_ref.DELETE;
16361 cz_pb_mgr.v_filter_sets_devl_ref.DELETE;
16362 cz_pb_mgr.v_filter_sets_rule_ref.DELETE;
16363 cz_pb_mgr.v_filter_sets_idx_ref.DELETE;
16364
16365 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16366 LOOP
16367 l_filter_sets_new_id_tbl.DELETE;
16368 l_filter_sets_id_tbl.DELETE;
16369 l_filter_sets_devl_tbl.DELETE;
16370 l_filter_sets_rule_tbl.DELETE;
16371
16372 BEGIN
16373 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_filter_sets_seq
16374 , 'cz_filter_sets_s.nextval' || cz_pb_mgr.v_db_link
16375 ,cz_pb_mgr.v_oraclesequenceincr
16376 )
16377 ,filter_set_id, devl_project_id, rule_id
16378 BULK COLLECT INTO l_filter_sets_new_id_tbl
16379 ,l_filter_sets_id_tbl, l_filter_sets_devl_tbl, l_filter_sets_rule_tbl
16380 FROM cz_filter_sets
16381 WHERE cz_filter_sets.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_filter_sets.deleted_flag = '0'
16382 AND EXISTS (SELECT NULL FROM cz_populators pop, cz_ps_nodes psn
16383 WHERE pop.deleted_flag = '0' AND pop.filter_set_id = cz_filter_sets.filter_set_id
16384 AND pop.owned_by_node_id = psn.ps_node_id AND psn.deleted_flag = '0');
16385
16386 EXCEPTION
16387 WHEN NO_DATA_FOUND
16388 THEN
16389 NULL;
16390 WHEN OTHERS
16391 THEN
16392 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_filter_sets', 'SQLERRM', SQLERRM);
16393 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FILTERSETS', SQLCODE);
16394 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16395 RAISE;
16396 END;
16397
16398 IF (l_filter_sets_id_tbl.COUNT > 0)
16399 THEN
16400 rec_flt_count := cz_pb_mgr.v_filter_sets_id_ref.COUNT;
16401
16402 FOR j IN l_filter_sets_id_tbl.FIRST .. l_filter_sets_id_tbl.LAST
16403 LOOP
16404 rec_flt_count := rec_flt_count + 1;
16405 cz_pb_mgr.v_filter_sets_new_id_ref(rec_flt_count) := l_filter_sets_new_id_tbl(j);
16406 cz_pb_mgr.v_filter_sets_id_ref(rec_flt_count) := l_filter_sets_id_tbl(j);
16407 cz_pb_mgr.v_filter_sets_idx_ref(l_filter_sets_id_tbl(j)) := l_filter_sets_new_id_tbl(j);
16408 cz_pb_mgr.v_filter_sets_devl_ref(rec_flt_count) := l_filter_sets_devl_tbl(j);
16409 cz_pb_mgr.v_filter_sets_rule_ref(rec_flt_count) := l_filter_sets_rule_tbl(j);
16410 END LOOP;
16411 END IF;
16412 END LOOP;
16413
16414 IF (cz_pb_mgr.v_filter_sets_id_ref.COUNT > 0)
16415 THEN
16416 cz_pb_mgr.v_populators_new_id_ref.DELETE;
16417 cz_pb_mgr.v_populators_id_ref.DELETE;
16418 cz_pb_mgr.v_populators_node_ref.DELETE;
16419 cz_pb_mgr.v_populators_set_id_ref.DELETE;
16420
16421 FOR i IN cz_pb_mgr.v_filter_sets_id_ref.FIRST .. cz_pb_mgr.v_filter_sets_id_ref.LAST
16422 LOOP
16423 l_populators_id_tbl.DELETE;
16424 l_populators_node_tbl.DELETE;
16425 l_populators_set_id_tbl.DELETE;
16426 l_populators_new_id_tbl.DELETE;
16427
16428 BEGIN
16429 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_populators_seq
16430 , 'cz_populators_s.nextval' || cz_pb_mgr.v_db_link
16431 ,cz_pb_mgr.v_oraclesequenceincr
16432 )
16433 ,populator_id, owned_by_node_id, filter_set_id
16434 BULK COLLECT INTO l_populators_new_id_tbl
16435 ,l_populators_id_tbl, l_populators_node_tbl, l_populators_set_id_tbl
16436 FROM cz_populators
16437 WHERE cz_populators.filter_set_id = cz_pb_mgr.v_filter_sets_id_ref(i) AND cz_populators.deleted_flag = '0';
16438 EXCEPTION
16439 WHEN NO_DATA_FOUND
16440 THEN
16441 NULL;
16442 WHEN OTHERS
16443 THEN
16444 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
16445 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
16446 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16447 RAISE;
16448 END;
16449
16450 IF (l_populators_id_tbl.COUNT > 0)
16451 THEN
16452 rec_pop_count := cz_pb_mgr.v_populators_id_ref.COUNT;
16453
16454 FOR j IN l_populators_id_tbl.FIRST .. l_populators_id_tbl.LAST
16455 LOOP
16456 rec_pop_count := rec_pop_count + 1;
16457 cz_pb_mgr.v_populators_new_id_ref(rec_pop_count) := l_populators_new_id_tbl(j);
16458 cz_pb_mgr.v_populators_id_ref(rec_pop_count) := l_populators_id_tbl(j);
16459 cz_pb_mgr.v_populators_node_ref(rec_pop_count) := l_populators_node_tbl(j);
16460 cz_pb_mgr.v_populators_set_id_ref(rec_pop_count) := l_populators_set_id_tbl(j);
16461 END LOOP;
16462 END IF;
16463 END LOOP;
16464
16465 ------resolve devl id and rule id
16466 resolve_ids(cz_pb_mgr.v_filter_sets_devl_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'dev proj id of cz filter sets');
16467 ------resolve devl id
16468 resolve_ids(cz_pb_mgr.v_filter_sets_rule_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of cz filter sets');
16469 -----resolve ps node id
16470 resolve_ids(cz_pb_mgr.v_populators_node_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'owned by node id of cz populators');
16471 -----resolve filter set id
16472 resolve_ids(cz_pb_mgr.v_populators_set_id_ref, cz_pb_mgr.v_filter_sets_idx_ref, 'filter set id of cz populators');
16473 plsql_table_list.DELETE;
16474 rec_count := 1;
16475 plsql_table_list(rec_count).col_name := 'filter_set_id';
16476 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_new_id_ref';
16477 rec_count := rec_count + 1;
16478 plsql_table_list(rec_count).col_name := 'devl_project_id';
16479 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_devl_ref';
16480 rec_count := rec_count + 1;
16481 plsql_table_list(rec_count).col_name := 'rule_id';
16482 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_rule_ref';
16483 insert_into_table('cz_filter_sets'
16484 ,'filter_set_id'
16485 ,cz_pb_mgr.v_db_link
16486 ,plsql_table_list
16487 ,'cz_pb_mgr.v_filter_sets_id_ref'
16488 ,cz_pb_mgr.v_filter_sets_id_ref
16489 );
16490 plsql_table_list.DELETE;
16491 rec_count := 1;
16492 plsql_table_list(rec_count).col_name := 'populator_id';
16493 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_new_id_ref';
16494 rec_count := rec_count + 1;
16495 plsql_table_list(rec_count).col_name := 'owned_by_node_id';
16496 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_node_ref';
16497 rec_count := rec_count + 1;
16498 plsql_table_list(rec_count).col_name := 'filter_set_id';
16499 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_set_id_ref';
16500 insert_into_table('cz_populators'
16501 ,'populator_id'
16502 ,cz_pb_mgr.v_db_link
16503 ,plsql_table_list
16504 ,'cz_pb_mgr.v_populators_id_ref'
16505 ,cz_pb_mgr.v_populators_id_ref
16506 );
16507
16508 IF (cz_pb_mgr.v_populators_node_ref.COUNT > 0)
16509 THEN
16510 EXECUTE IMMEDIATE
16511 'BEGIN' || ' ' ||
16512 'FOR i IN cz_pb_mgr.v_populators_node_ref.FIRST..cz_pb_mgr.v_populators_node_ref.LAST' || ' ' ||
16513 'LOOP' || ' ' ||
16514 'UPDATE cz_ps_nodes' || cz_pb_mgr.v_db_link || ' ' || 't' || ' ' ||
16515 'SET t.from_populator_id = cz_pb_mgr.v_populators_new_id_ref(i) ' || ' ' ||
16516 'WHERE t.devl_project_id = cz_pb_mgr.v_filter_sets_devl_ref(i) AND' || ' ' ||
16517 't.from_populator_id=cz_pb_mgr.v_populators_id_ref(i) AND' || ' ' ||
16518 't.deleted_flag=''0''; ' || ' ' ||
16519 'END LOOP;' || ' ' ||
16520 'END;';
16521
16522 COMMIT;
16523 END IF;
16524 END IF;
16525 END IF;
16526 EXCEPTION
16527 WHEN OTHERS
16528 THEN
16529 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
16530 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
16531 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16532 RAISE;
16533 END export_populators;
16534
16535 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16536 ------procedure that uploads rule schema
16537 PROCEDURE upload_rule_schema(p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref, p_copy_rules_flag IN VARCHAR2, x_status IN OUT NOCOPY VARCHAR2)
16538 AS
16539 rec_count PLS_INTEGER := 0;
16540 plsql_table_list cz_pb_mgr.col_plsql_table_list;
16541 v_cz_folders_pf_id_tbl cz_pb_mgr.t_ref;
16542 v_cz_folders_pj_id_tbl cz_pb_mgr.t_ref;
16543 v_cz_express_proj_id_tbl cz_pb_mgr.t_ref;
16544 v_cz_enodes_expr_id_tbl cz_pb_mgr.t_ref;
16545 v_cz_des_feature_id_old_tbl cz_pb_mgr.t_ref;
16546 v_cz_des_feature_rule_id_tbl cz_pb_mgr.t_ref;
16547 v_cz_des_feature_mrefl_id_tbl cz_pb_mgr.t_ref;
16548 v_cz_des_feature_ft_typ_tbl cz_pb_mgr.t_ref;
16549 v_cz_des_cells_rule_id_tbl cz_pb_mgr.t_ref;
16550 v_cz_des_cells_sf_id_tbl cz_pb_mgr.t_ref;
16551 v_cz_des_cells_sopt_id_tbl cz_pb_mgr.t_ref;
16552 v_cz_des_cells_popt_id_tbl cz_pb_mgr.t_ref;
16553 v_cz_des_cells_sexpl_id_tbl cz_pb_mgr.t_ref;
16554 v_cz_des_cells_mark_char_tbl cz_pb_mgr.exprflgtype;
16555 v_cz_rule_folders_orig_tbl cz_pb_mgr.orig_sys_ref_type;
16556 v_cz_rule_folders_eff_tbl cz_pb_mgr.t_ref;
16557 v_sig_count NUMBER := 0;
16558 v_object_type_tbl cz_pb_mgr.objtype;
16559 rec_count_rsq NUMBER := 0;
16560 v_rule_type_tbl cz_pb_mgr.t_ref;
16561 v_model_root_folder_map cz_pb_mgr.t_ref_idx_vc2;
16562
16563 PROCEDURE mm_resolve_rule_fks(px_fk_tbl IN OUT NOCOPY t_ref, p_id_map t_ref_idx_vc2, p_ruleid_tbl IN t_ref, p_colname IN VARCHAR2)
16564 IS
16565 BEGIN
16566 IF px_fk_tbl.COUNT=0 THEN RETURN; END IF;
16567
16568 FOR i IN px_fk_tbl.FIRST .. px_fk_tbl.LAST LOOP
16569 IF px_fk_tbl(i) IS NOT NULL THEN
16570 BEGIN
16571 px_fk_tbl(i) := p_id_map(px_fk_tbl(i));
16572 EXCEPTION
16573 WHEN NO_DATA_FOUND THEN
16574 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16575 FOR j IN (SELECT rule.name rulename, prj.name prjname
16576 FROM cz_rules rule, cz_devl_projects prj
16577 WHERE rule.rule_id=p_ruleid_tbl(i) AND rule.devl_project_id=prj.devl_project_id) LOOP
16578 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MIGR_RULE_ERR', 'FK_COL', p_colname, 'RULE_NAME', j.rulename, 'MODEL_NAME', j.prjname);
16579 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'upload_rule_schema.mm_resolve_rule_fks', SQLCODE);
16580 END LOOP;
16581 RAISE;
16582 END;
16583 END IF;
16584 END LOOP;
16585 END mm_resolve_rule_fks;
16586
16587 BEGIN
16588 --------------populate ps nodes pl/sql table with ps node ids from remote server
16589 get_rem_nodes_of_models(cz_pb_mgr.v_models_not_to_be_exported
16590 ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
16591 ,cz_pb_mgr.v_status_code
16592 );
16593 -------insert into cz_rule_folders
16594 clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
16595 mm_v_tbl_rule_seq.DELETE;
16596
16597 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16598 THEN
16599 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16600 LOOP
16601 clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
16602 v_cz_folders_pf_id_tbl.DELETE;
16603 v_cz_folders_pj_id_tbl.DELETE;
16604 v_cz_rule_folders_orig_tbl.DELETE;
16605 v_cz_rule_folders_eff_tbl.DELETE;
16606 v_object_type_tbl.DELETE;
16607
16608 BEGIN
16609 IF (cz_pb_mgr.v_session_parameter = model_copy)
16610 THEN
16611 IF (p_copy_rules_flag = 'YES') THEN
16612 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
16613 , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
16614 ,cz_pb_mgr.v_oraclesequenceincr
16615 )
16616 ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
16617 ,orig_sys_ref, object_type
16618 BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
16619 ,cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl, v_cz_folders_pj_id_tbl, v_cz_rule_folders_orig_tbl
16620 ,v_cz_rule_folders_eff_tbl, v_object_type_tbl
16621 FROM cz_rule_folders t
16622 WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND t.deleted_flag = '0' AND t.object_type IN('RFL', 'RSQ');
16623 ELSE -- Just create the Model Rule Folder if not copying rules
16624 SELECT cz_pb_mgr.sequence_generate(
16625 cz_pb_mgr.cz_rule_folders_seq,
16626 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
16627 cz_pb_mgr.v_oraclesequenceincr
16628 ),
16629 rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id,orig_sys_ref, object_type
16630 BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl, cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl,
16631 v_cz_folders_pj_id_tbl, v_cz_rule_folders_orig_tbl, v_cz_rule_folders_eff_tbl, v_object_type_tbl
16632 FROM cz_rule_folders t
16633 WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16634 AND t.deleted_flag = '0'
16635 AND t.parent_rule_folder_id IS NULL
16636 AND t.object_type = 'RFL';
16637 END IF;
16638 ELSE
16639 IF (p_copy_rules_flag = 'YES')
16640 THEN
16641 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
16642 , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
16643 ,cz_pb_mgr.v_oraclesequenceincr
16644 )
16645 ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
16646 ,orig_sys_ref, object_type
16647 BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
16648 ,cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl, v_cz_folders_pj_id_tbl, v_cz_rule_folders_eff_tbl
16649 ,v_cz_rule_folders_orig_tbl, v_object_type_tbl
16650 FROM cz_rule_folders t
16651 WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16652 AND t.deleted_flag = '0'
16653 AND t.object_type IN('RFL', 'RSQ');
16654 ELSE -- Just create the Model Rule Folder if not copying rules
16655 SELECT cz_pb_mgr.sequence_generate(
16656 cz_pb_mgr.cz_rule_folders_seq,
16657 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
16658 cz_pb_mgr.v_oraclesequenceincr
16659 ), rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id, orig_sys_ref, object_type
16660 BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl, cz_pb_mgr.v_cz_folders_id_old_tbl, v_cz_folders_pf_id_tbl,
16661 v_cz_folders_pj_id_tbl, v_cz_rule_folders_eff_tbl, v_cz_rule_folders_orig_tbl, v_object_type_tbl
16662 FROM cz_rule_folders t
16663 WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16664 AND t.deleted_flag = '0'
16665 AND t.parent_rule_folder_id IS NULL
16666 AND t.object_type = 'RFL';
16667 END IF;
16668 END IF;
16669 EXCEPTION
16670 WHEN NO_DATA_FOUND
16671 THEN
16672 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
16673 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
16674 WHEN OTHERS
16675 THEN
16676 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rule_folders', 'SQLERRM', SQLERRM);
16677 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
16678 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16679 RAISE;
16680 END;
16681
16682 rec_count := cz_pb_mgr.v_cz_folders_id_new_ref.COUNT;
16683 rec_count_rsq := mm_v_tbl_rule_seq.COUNT;
16684
16685 IF (cz_pb_mgr.v_cz_folders_id_new_tbl.COUNT > 0)
16686 THEN
16687 FOR k IN cz_pb_mgr.v_cz_folders_id_new_tbl.FIRST .. cz_pb_mgr.v_cz_folders_id_new_tbl.LAST
16688 LOOP
16689 rec_count := rec_count + 1;
16690 cz_pb_mgr.v_cz_folders_id_new_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_new_tbl(k);
16691 cz_pb_mgr.v_cz_folders_id_old_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_old_tbl(k);
16692 cz_pb_mgr.v_cz_folders_id_idx_ref(cz_pb_mgr.v_cz_folders_id_old_tbl(k)):=cz_pb_mgr.v_cz_folders_id_new_tbl(k);
16693 cz_pb_mgr.v_cz_folders_pf_id_ref(rec_count) := v_cz_folders_pf_id_tbl(k);
16694 cz_pb_mgr.v_cz_folders_pj_id_ref(rec_count) := v_cz_folders_pj_id_tbl(k);
16695 cz_pb_mgr.v_cz_folders_eff_ref(rec_count) := v_cz_rule_folders_eff_tbl(k);
16696 cz_pb_mgr.v_cz_folders_orig_ref(rec_count) := v_cz_rule_folders_orig_tbl(k);
16697 cz_pb_mgr.v_cz_folders_obj_ref(rec_count) := v_object_type_tbl(k);
16698
16699 IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
16700 v_model_root_folder_map(cz_pb_mgr.v_models_to_be_exported(i)):=v_cz_folders_id_old_tbl(k);
16701 END IF;
16702
16703 IF (v_object_type_tbl(k) = 'RSQ')
16704 THEN
16705 rec_count_rsq := rec_count_rsq + 1;
16706 mm_v_tbl_rule_seq(rec_count_rsq) := v_cz_folders_id_old_tbl(k);
16707 END IF;
16708 END LOOP;
16709 END IF;
16710 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
16711 END IF; /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
16712
16713 -----resolve parent rule folder id and devl proj id
16714 resolve_ids(cz_pb_mgr.v_cz_folders_pf_id_ref, cz_pb_mgr.v_cz_folders_id_idx_ref, 'parent folder id of rule folders');
16715 resolve_ids(cz_pb_mgr.v_cz_folders_pj_id_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl proj id of rule folders');
16716 insert_eff_sets(cz_pb_mgr.v_cz_folders_eff_ref
16717 ,cz_pb_mgr.v_cz_eff_sets_old_tbl
16718 ,cz_pb_mgr.v_cz_eff_sets_new_tbl
16719 ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
16720 ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
16721 ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
16722 ,'Eff sets of rule folders'
16723 );
16724 resolve_ids(cz_pb_mgr.v_cz_folders_eff_ref, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff id of rule folders');
16725 -----insert new records into cz_rule_folders
16726 plsql_table_list.DELETE;
16727 rec_count := 1;
16728 plsql_table_list(rec_count).col_name := 'rule_folder_id';
16729 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_id_new_ref';
16730 rec_count := rec_count + 1;
16731 plsql_table_list(rec_count).col_name := 'object_type';
16732 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_obj_ref';
16733 rec_count := rec_count + 1;
16734 plsql_table_list(rec_count).col_name := 'devl_project_id';
16735 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pj_id_ref';
16736 rec_count := rec_count + 1;
16737 plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
16738 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pf_id_ref';
16739 rec_count := rec_count + 1;
16740 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
16741 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_eff_ref';
16742 rec_count := rec_count + 1;
16743 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
16744 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_orig_ref';
16745 insert_into_table('cz_rule_folders'
16746 ,'rule_folder_id'
16747 ,'object_type'
16748 ,cz_pb_mgr.v_db_link
16749 ,plsql_table_list
16750 ,'cz_pb_mgr.v_cz_folders_id_old_ref'
16751 ,'cz_pb_mgr.v_cz_folders_obj_ref'
16752 ,cz_pb_mgr.v_cz_folders_id_old_ref
16753 ,cz_pb_mgr.v_cz_folders_obj_ref
16754 );
16755
16756 --------release local pl/sql tables of rule folders
16757 v_cz_folders_pf_id_tbl.DELETE;
16758 v_cz_folders_pj_id_tbl.DELETE;
16759 v_cz_rule_folders_eff_tbl.DELETE;
16760 v_cz_rule_folders_orig_tbl.DELETE;
16761 clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
16762
16763 -------------insert into func comp specs
16764 IF cz_pb_mgr.v_cz_func_comp_old_ref.COUNT > 0 THEN
16765 IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
16766 FOR i IN cz_pb_mgr.v_cz_func_fld_old_ref.FIRST .. cz_pb_mgr.v_cz_func_fld_old_ref.LAST LOOP
16767 IF cz_pb_mgr.v_cz_func_fld_old_ref(i) IS NOT NULL THEN
16768 cz_pb_mgr.v_cz_func_fld_old_ref(i):=v_model_root_folder_map(cz_pb_mgr.v_cz_func_devl_old_ref(i));
16769 END IF;
16770 END LOOP;
16771 END IF;
16772 resolve_ids(cz_pb_mgr.v_cz_func_fld_old_ref, cz_pb_mgr.v_cz_folders_id_idx_ref, 'rule folder id of cz_func_comp_specs');
16773
16774 IF (cz_pb_mgr.g_log_timing = publication_timing)
16775 THEN
16776 log_timing_message('start resolve_ids devl project id of cz_func_comp_specs');
16777 END IF;
16778
16779 resolve_ids(cz_pb_mgr.v_cz_func_devl_old_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'devl project id of cz_func_comp_specs');
16780
16781 IF (cz_pb_mgr.g_log_timing = publication_timing)
16782 THEN
16783 log_timing_message('end resolve_ids devl project id of cz_func_comp_specs');
16784 log_timing_message('start resolve_ids component id of cz_func_comp_specs');
16785 END IF;
16786
16787 resolve_ids(cz_pb_mgr.v_cz_func_cid_old_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'component id of cz_func_comp_specs', FLD_RULE_COMPONENT_ID);
16788
16789 IF (cz_pb_mgr.g_log_timing = publication_timing)
16790 THEN
16791 log_timing_message('end resolve_ids component id of cz_func_comp_specs');
16792 log_timing_message('start resolve_ids model ref expl id of cz_funce_comp_specs');
16793 END IF;
16794
16795 resolve_ids(cz_pb_mgr.v_cz_func_expl_old_ref, cz_pb_mgr.v_cz_model_ref_expls_idx_ref, 'model ref expl id of cz_func_comp_specs');
16796
16797 IF (cz_pb_mgr.g_log_timing = publication_timing)
16798 THEN
16799 log_timing_message('end resolve_ids model ref expl id of cz_funce_comp_specs');
16800 END IF;
16801
16802 --------populate plsql_table_list for cz func comp specs
16803 plsql_table_list.DELETE;
16804 rec_count := 1;
16805 plsql_table_list(rec_count).col_name := 'func_comp_id';
16806 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
16807 rec_count := rec_count + 1;
16808 plsql_table_list(rec_count).col_name := 'devl_project_id';
16809 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
16810 rec_count := rec_count + 1;
16811 plsql_table_list(rec_count).col_name := 'component_id';
16812 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_cid_old_ref';
16813 rec_count := rec_count + 1;
16814 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
16815 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_expl_old_ref';
16816 rec_count := rec_count + 1;
16817 plsql_table_list(rec_count).col_name := 'rule_folder_id';
16818 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
16819
16820 ----------insert into cz_func_comp_specs
16821 IF (cz_pb_mgr.g_log_timing = publication_timing)
16822 THEN
16823 log_timing_message('start insert_into_table cz_func_comp_specs');
16824 END IF;
16825
16826 insert_into_table('cz_func_comp_specs'
16827 ,'func_comp_id'
16828 ,cz_pb_mgr.v_db_link
16829 ,plsql_table_list
16830 ,'cz_pb_mgr.v_cz_func_comp_old_ref'
16831 ,cz_pb_mgr.v_cz_func_comp_old_ref
16832 );
16833
16834 IF (cz_pb_mgr.g_log_timing = publication_timing)
16835 THEN
16836 log_timing_message('end insert_into_table cz_func_comp_specs');
16837 END IF;
16838
16839 -----insert new records into cz_rule_folders
16840 plsql_table_list.DELETE;
16841 rec_count := 1;
16842 plsql_table_list(rec_count).col_name := 'rule_folder_id';
16843 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
16844 rec_count := rec_count + 1;
16845 plsql_table_list(rec_count).col_name := 'object_type';
16846 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_obj_ref';
16847 rec_count := rec_count + 1;
16848 plsql_table_list(rec_count).col_name := 'devl_project_id';
16849 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
16850 rec_count := rec_count + 1;
16851 plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
16852 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
16853 ----------insert into cz_func_comp_specs
16854 insert_into_table('cz_rule_folders'
16855 ,'rule_folder_id'
16856 ,'object_type'
16857 ,cz_pb_mgr.v_db_link
16858 ,plsql_table_list
16859 ,'cz_pb_mgr.v_cz_func_comp_old_ref'
16860 ,'cz_pb_mgr.v_cz_func_obj_ref'
16861 ,cz_pb_mgr.v_cz_func_comp_old_ref
16862 ,cz_pb_mgr.v_cz_func_obj_ref
16863 );
16864 END IF;
16865
16866 -----export archives
16867 export_archives;
16868 export_populators;
16869
16870 IF cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0 THEN
16871 insert_rules(p_copy_rules_flag, v_model_root_folder_map);
16872 END IF;
16873
16874 IF cz_pb_mgr.v_session_parameter = pub_model THEN
16875 IF g_engine_type = ENGINE_TYPE_FCE THEN
16876 copy_fce_files;
16877 ELSE
16878 copy_lce_headers;
16879 copy_lce_texts(p_copy_rules_flag);
16880 END IF;
16881 END IF;
16882
16883 ---------------local pl/sql tables of cz rules released after populating rule sub schema
16884 -------------insert expressions
16885 IF (cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0)
16886 THEN
16887 FOR m IN cz_pb_mgr.v_cz_rules_rule_id_old_ref.FIRST .. cz_pb_mgr.v_cz_rules_rule_id_old_ref.LAST
16888 LOOP
16889 clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
16890
16891 BEGIN
16892 IF (cz_pb_mgr.v_session_parameter IN(model_copy, cz_model_migration_pvt.migrate_model))
16893 THEN
16894 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
16895 , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
16896 ,cz_pb_mgr.v_oraclesequenceincr
16897 )
16898 ,expr_node_id, ps_node_id, expr_parent_id
16899 ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
16900 ,param_signature_id,property_id
16901 BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
16902 ,cz_pb_mgr.v_cz_enodes_enode_id_old_tbl, cz_pb_mgr.v_cz_enodes_psnode_id_tbl, cz_pb_mgr.v_cz_enodes_pexpr_id_tbl
16903 ,cz_pb_mgr.v_cz_enodes_mrefl_id_tbl, cz_pb_mgr.v_cz_enodes_rule_id_tbl, cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl
16904 ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
16905 ,cz_pb_mgr.v_cz_enodes_prop_id_tbl
16906 FROM cz_expression_nodes t
16907 WHERE t.rule_id = cz_pb_mgr.v_cz_rules_rule_id_old_ref(m) AND t.deleted_flag = '0';
16908 ELSE
16909 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
16910 , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
16911 ,cz_pb_mgr.v_oraclesequenceincr
16912 )
16913 ,expr_node_id, ps_node_id, expr_parent_id
16914 ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
16915 ,param_signature_id
16916 BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
16917 ,cz_pb_mgr.v_cz_enodes_enode_id_old_tbl, cz_pb_mgr.v_cz_enodes_psnode_id_tbl, cz_pb_mgr.v_cz_enodes_pexpr_id_tbl
16918 ,cz_pb_mgr.v_cz_enodes_mrefl_id_tbl, cz_pb_mgr.v_cz_enodes_rule_id_tbl, cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl
16919 ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
16920 FROM cz_expression_nodes t
16921 WHERE t.rule_id = cz_pb_mgr.v_cz_rules_rule_id_old_ref(m) AND t.deleted_flag = '0' AND t.expr_type <> 208;
16922 END IF;
16923 EXCEPTION
16924 WHEN NO_DATA_FOUND
16925 THEN
16926 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
16927 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
16928 WHEN OTHERS
16929 THEN
16930 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_expression_nodes', 'SQLERRM', SQLERRM);
16931 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
16932 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16933 RAISE;
16934 END;
16935
16936 rec_count := cz_pb_mgr.v_cz_enodes_enode_id_new_ref.COUNT;
16937
16938 IF (cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.COUNT > 0)
16939 THEN
16940 FOR i IN cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.FIRST .. cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.LAST
16941 LOOP
16942 rec_count := rec_count + 1;
16943 cz_pb_mgr.v_cz_enodes_enode_id_new_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_new_tbl(i);
16944 cz_pb_mgr.v_cz_enodes_enode_id_old_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_old_tbl(i);
16945 cz_pb_mgr.v_cz_enodes_enode_id_idx_ref(cz_pb_mgr.v_cz_enodes_enode_id_old_tbl(i)):=cz_pb_mgr.v_cz_enodes_enode_id_new_tbl(i);
16946 cz_pb_mgr.v_cz_enodes_psnode_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_psnode_id_tbl(i);
16947 cz_pb_mgr.v_cz_enodes_pexpr_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_pexpr_id_tbl(i);
16948 cz_pb_mgr.v_cz_enodes_mrefl_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_mrefl_id_tbl(i);
16949 cz_pb_mgr.v_cz_enodes_rule_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_rule_id_tbl(i);
16950 cz_pb_mgr.v_cz_enodes_arg_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
16951 cz_pb_mgr.v_cz_enodes_par_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
16952
16953 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
16954 THEN
16955 cz_pb_mgr.v_cz_enodes_prop_id_ref(rec_count):=cz_pb_mgr.v_cz_enodes_prop_id_tbl(i);
16956 END IF;
16957
16958 IF (cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i) IS NOT NULL)
16959 THEN
16960 IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i)))
16961 THEN
16962 v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
16963 cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
16964 cz_pb_mgr.v_cz_expr_sig_idx_ref(cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i)) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
16965 END IF;
16966 END IF;
16967
16968 IF (cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i) IS NOT NULL)
16969 THEN
16970 IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i)))
16971 THEN
16972 v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
16973 cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
16974 cz_pb_mgr.v_cz_expr_sig_idx_ref(cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i)) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
16975 END IF;
16976 END IF;
16977 END LOOP;
16978 END IF;
16979 END LOOP; /* end loop of */
16980 END IF; -- end cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0 /* (COUNT > 0) */
16981
16982 --------export_signatures
16983 export_signatures(cz_pb_mgr.v_cz_expr_sig_ref);
16984 -----------resolve parent expr node id
16985 resolve_ids(cz_pb_mgr.v_cz_enodes_pexpr_id_ref, cz_pb_mgr.v_cz_enodes_enode_id_idx_ref, 'parent expr ids of expression nodes', FLD_IGNORE_NOW);
16986 -------resolve sig ids
16987 resolve_ids(cz_pb_mgr.v_cz_enodes_arg_sig_id_ref, cz_pb_mgr.v_sig_idx_ref, 'arg sig ids cz expr nodes', ENTITY_TYPE_SIGNATURE);
16988 resolve_ids(cz_pb_mgr.v_cz_enodes_par_sig_id_ref, cz_pb_mgr.v_sig_idx_ref, 'param sig ids cz expr nodes', ENTITY_TYPE_SIGNATURE);
16989
16990 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
16991 mm_resolve_rule_fks(cz_pb_mgr.v_cz_enodes_psnode_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_enodes_rule_id_ref,'cz_expression_nodes.ps_node_id');
16992 mm_resolve_rule_fks(cz_pb_mgr.v_cz_enodes_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,cz_pb_mgr.v_cz_enodes_rule_id_ref,'cz_expression_nodes.model_ref_expl_id');
16993 resolve_ids(cz_pb_mgr.v_cz_enodes_prop_id_ref, cz_pb_mgr.mm_v_ht_sync_all_prop, 'property id of cz expr nodes', ENTITY_TYPE_PROPERTY);
16994 ELSE
16995 resolve_ids(cz_pb_mgr.v_cz_enodes_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,'model ref expl id of expression nodes',FLD_IGNORE_NOW);
16996 resolve_ids(cz_pb_mgr.v_cz_enodes_psnode_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'ps node ids of expression nodes',FLD_IGNORE_NOW);
16997 END IF;
16998
16999 resolve_ids(cz_pb_mgr.v_cz_enodes_rule_id_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of expression nodes');
17000
17001 --------populate plsql_table_list for cz_expression_nodes
17002 plsql_table_list.DELETE;
17003 rec_count := 1;
17004 plsql_table_list(rec_count).col_name := 'expr_node_id';
17005 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_enode_id_new_ref';
17006 rec_count := rec_count + 1;
17007 plsql_table_list(rec_count).col_name := 'rule_id';
17008 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_rule_id_ref';
17009 rec_count := rec_count + 1;
17010 plsql_table_list(rec_count).col_name := 'ps_node_id';
17011 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_psnode_id_ref';
17012 rec_count := rec_count + 1;
17013 plsql_table_list(rec_count).col_name := 'expr_parent_id';
17014 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_pexpr_id_ref';
17015 rec_count := rec_count + 1;
17016 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
17017 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_mrefl_id_ref';
17018 rec_count := rec_count + 1;
17019 plsql_table_list(rec_count).col_name := 'argument_signature_id';
17020 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_arg_sig_id_ref';
17021 rec_count := rec_count + 1;
17022 plsql_table_list(rec_count).col_name := 'param_signature_id';
17023 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_par_sig_id_ref';
17024
17025 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
17026 THEN
17027 rec_count := rec_count + 1;
17028 plsql_table_list(rec_count).col_name := 'property_id';
17029 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_prop_id_ref';
17030 END IF;
17031
17032 ------insert new records into cz_expression_nodes
17033 insert_into_table('cz_expression_nodes'
17034 ,'expr_node_id'
17035 ,cz_pb_mgr.v_db_link
17036 ,plsql_table_list
17037 ,'cz_pb_mgr.v_cz_enodes_enode_id_old_ref'
17038 ,cz_pb_mgr.v_cz_enodes_enode_id_old_ref
17039 );
17040 --------release tbl pl/sql tables of cz expression nodes
17041 clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
17042
17043 IF (p_copy_rules_flag = 'YES') THEN
17044
17045 -------------insert into cz_des_chart_features
17046 clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
17047
17048 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17049 THEN
17050 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17051 LOOP
17052 v_cz_des_feature_id_old_tbl.DELETE;
17053 v_cz_des_feature_rule_id_tbl.DELETE;
17054 v_cz_des_feature_mrefl_id_tbl.DELETE;
17055 v_cz_des_feature_ft_typ_tbl.DELETE;
17056
17057 BEGIN
17058 SELECT feature_id, rule_id, model_ref_expl_id, feature_type
17059 BULK COLLECT INTO v_cz_des_feature_id_old_tbl, v_cz_des_feature_rule_id_tbl, v_cz_des_feature_mrefl_id_tbl, v_cz_des_feature_ft_typ_tbl
17060 FROM cz_des_chart_features t
17061 WHERE t.rule_id IN(
17062 SELECT rule_id
17063 FROM cz_rules
17064 WHERE cz_rules.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
17065 AND cz_rules.deleted_flag = '0')
17066 AND t.deleted_flag = '0';
17067 EXCEPTION
17068 WHEN NO_DATA_FOUND
17069 THEN
17070 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
17071 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
17072 WHEN OTHERS
17073 THEN
17074 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
17075 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
17076 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17077 RAISE;
17078 END;
17079
17080 rec_count := cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT;
17081
17082 IF (v_cz_des_feature_id_old_tbl.COUNT > 0)
17083 THEN
17084 FOR k IN v_cz_des_feature_id_old_tbl.FIRST .. v_cz_des_feature_id_old_tbl.LAST
17085 LOOP
17086 rec_count := rec_count + 1;
17087 cz_pb_mgr.v_cz_des_feature_id_old_ref(rec_count) := v_cz_des_feature_id_old_tbl(k);
17088 cz_pb_mgr.v_cz_des_feature_rule_id_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
17089 cz_pb_mgr.v_cz_des_feature_rid_new_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
17090 cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(rec_count) := v_cz_des_feature_mrefl_id_tbl(k);
17091 cz_pb_mgr.v_cz_des_feature_ft_typ_ref(rec_count) := v_cz_des_feature_ft_typ_tbl(k);
17092 END LOOP;
17093 END IF;
17094 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
17095 END IF; /* cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
17096
17097 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
17098 mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_feature_id_old_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_des_feature_rid_new_ref,'cz_des_chart_features.feature_id');
17099 mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_feature_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,cz_pb_mgr.v_cz_des_feature_rid_new_ref,'cz_des_chart_features.model_ref_expl_id');
17100 ELSE
17101 resolve_ids(cz_pb_mgr.v_cz_des_feature_id_old_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'feature id of cz_des_features',FLD_IGNORE_NOW);
17102 resolve_ids(cz_pb_mgr.v_cz_des_feature_mrefl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,'model ref expl id of cz_des_features',FLD_IGNORE_NOW);
17103 END IF;
17104
17105 resolve_ids(cz_pb_mgr.v_cz_des_feature_rid_new_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of des chart features');
17106
17107 ------insert new records into cz_des_chart_features
17108 insert_des_chart_features(cz_pb_mgr.v_status_code);
17109 -------------release local pl/sql tables of des chart features
17110 v_cz_des_feature_id_old_tbl.DELETE;
17111 v_cz_des_feature_rule_id_tbl.DELETE;
17112 v_cz_des_feature_mrefl_id_tbl.DELETE;
17113 v_cz_des_feature_ft_typ_tbl.DELETE;
17114 ------------insert into cz_des_chart_cells
17115 clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
17116
17117 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17118 THEN
17119 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17120 LOOP
17121 v_cz_des_cells_rule_id_tbl.DELETE;
17122 v_cz_des_cells_sf_id_tbl.DELETE;
17123 v_cz_des_cells_sopt_id_tbl.DELETE;
17124 v_cz_des_cells_popt_id_tbl.DELETE;
17125 v_cz_des_cells_sexpl_id_tbl.DELETE;
17126 v_rule_type_tbl.DELETE;
17127
17128 BEGIN
17129 SELECT rul.rule_id, secondary_feature_id, primary_opt_id, secondary_opt_id
17130 , secondary_feat_expl_id, mark_char, rule_type
17131 BULK COLLECT INTO v_cz_des_cells_rule_id_tbl, v_cz_des_cells_sf_id_tbl, v_cz_des_cells_popt_id_tbl, v_cz_des_cells_sopt_id_tbl
17132 ,v_cz_des_cells_sexpl_id_tbl, v_cz_des_cells_mark_char_tbl, v_rule_type_tbl
17133 FROM cz_rules rul, cz_des_chart_cells dcc
17134 WHERE rul.deleted_flag = '0' AND rul.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
17135 AND rul.rule_id = dcc.rule_id AND dcc.deleted_flag = '0';
17136 EXCEPTION
17137 WHEN NO_DATA_FOUND
17138 THEN
17139 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
17140 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
17141 WHEN OTHERS
17142 THEN
17143 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
17144 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
17145 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17146 RAISE;
17147 END;
17148
17149 rec_count := cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.COUNT;
17150
17151 IF (v_cz_des_cells_rule_id_tbl.COUNT > 0)
17152 THEN
17153 FOR k IN v_cz_des_cells_rule_id_tbl.FIRST .. v_cz_des_cells_rule_id_tbl.LAST
17154 LOOP
17155 rec_count := rec_count + 1;
17156 cz_pb_mgr.v_cz_des_cells_rule_id_old_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
17157 cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
17158 cz_pb_mgr.v_cz_des_cells_sf_id_ref(rec_count) := v_cz_des_cells_sf_id_tbl(k);
17159 cz_pb_mgr.v_cz_des_cells_sopt_id_ref(rec_count) := v_cz_des_cells_sopt_id_tbl(k);
17160 cz_pb_mgr.v_cz_des_cells_popt_id_ref(rec_count) := v_cz_des_cells_popt_id_tbl(k);
17161 cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(rec_count) := v_cz_des_cells_sexpl_id_tbl(k);
17162 cz_pb_mgr.v_cz_des_cells_mark_char_ref(rec_count) := v_cz_des_cells_mark_char_tbl(k);
17163 END LOOP;
17164 END IF;
17165 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
17166 END IF; /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
17167
17168 resolve_ids(cz_pb_mgr.v_cz_des_cells_rule_id_new_ref, cz_pb_mgr.v_cz_rules_rule_id_idx_ref, 'rule id of des chart cells');
17169 resolve_ids(cz_pb_mgr.v_cz_des_cells_popt_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'cz_des_chart_cells.primary_opt_id',FLD_IGNORE_NOW);
17170
17171 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
17172 mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_cells_sf_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_des_cells_rule_id_old_ref,'cz_des_chart_cells.secondary_feature_id');
17173 mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_cells_sopt_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,cz_pb_mgr.v_cz_des_cells_rule_id_old_ref,'cz_des_chart_cells.secondary_opt_id');
17174 mm_resolve_rule_fks(cz_pb_mgr.v_cz_des_cells_sexpl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,cz_pb_mgr.v_cz_des_cells_rule_id_old_ref,'cz_des_chart_cells.secondary_feat_expl_id');
17175 ELSE
17176 resolve_ids(cz_pb_mgr.v_cz_des_cells_sf_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'secondary feature id of cz_des_cells',FLD_IGNORE_NOW);
17177 resolve_ids(cz_pb_mgr.v_cz_des_cells_sopt_id_ref,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'secondary opt id of cz_des_cells',FLD_IGNORE_NOW);
17178 resolve_ids(cz_pb_mgr.v_cz_des_cells_sexpl_id_ref,cz_pb_mgr.v_cz_model_ref_expls_idx_ref,'secondary feat expl id of cz_des_cells',FLD_IGNORE_NOW);
17179 END IF;
17180
17181 ------insert new records into cz_des_chart_cells
17182 insert_des_chart_cells(cz_pb_mgr.v_status_code);
17183
17184 --during model migration, if a rule_seq has a rule whose effectivity_set_id already
17185 --exists on the target, then set the rule effectivity to be
17186 --never effective for all the rules in that rule sequence
17187 --do this only if there is something to resolve(mm_v_ht_eff_set_tbl_t.COUNT >0)
17188 IF ( (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17189 AND (mm_v_tbl_rule_seq.COUNT > 0)
17190 AND (mm_v_ht_eff_set_tbl_t.COUNT > 0)
17191 )
17192 THEN
17193 mm_resolve_rule_seq_effsetid;
17194 END IF;
17195
17196 -------------release local pl/sql tables of cz des chart cells
17197 v_cz_des_cells_rule_id_tbl.DELETE;
17198 v_cz_des_cells_sf_id_tbl.DELETE;
17199 v_cz_des_cells_sopt_id_tbl.DELETE;
17200 v_cz_des_cells_popt_id_tbl.DELETE;
17201 v_cz_des_cells_sexpl_id_tbl.DELETE;
17202
17203 ELSE
17204 clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
17205 END IF;
17206 EXCEPTION
17207 WHEN OTHERS
17208 THEN
17209 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
17210 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_sql_err_msg, 'cz_pb_mgr.RULESCHEMA', SQLCODE);
17211 x_status := PUBLICATION_ERROR;
17212 RAISE pb_upload_rule_schema;
17213 END upload_rule_schema;
17214 -----------------------------------------------------------------------------------------------------
17215 PROCEDURE mm_raiseallpossiblesyncerrors
17216 AS
17217 v_prop_id cz_properties.property_id%TYPE;
17218 v_error_flag PLS_INTEGER := 0;
17219 v_null PLS_INTEGER;
17220 j PLS_INTEGER;
17221 v_target_item_type_name cz_item_types.name%TYPE;
17222
17223 v_null_table number_type_tbl;
17224
17225 BEGIN
17226 -- PROPERTY: check if there is atleast one property where the names match, but datatype does not
17227 -- ITEM_TYPES: check if there are more source item properties than target item properties
17228 -- ITEM TYPES: heck if there is atleast one item where the item_type is different
17229 -- UI CONTENT TEMPLATES: UI Content template failure - exact match on TEMPLATE_TYPE, MESSAGE_TYPE, but mismatch
17230 -- on either of ROOT_ELEMENT_TYPE, MAIN_MESSAGE_ID, PARENT_CONTAINER_TYPE,
17231 -- ROOT ELEMENT SIGNATURE_ID or ROOT_REGION_CODE
17232 -- USAGE: Name does not match, but there are already 64 Usages
17233 FOR i IN 1 .. v_remote_prop_ref.COUNT
17234 LOOP
17235 BEGIN
17236 EXECUTE IMMEDIATE 'SELECT data_type FROM cz_properties'
17237 || cz_pb_mgr.v_db_link
17238 || ' WHERE deleted_flag = ''0'' AND name = :1 AND NVL(src_application_id, 0) = :2'
17239 INTO v_null
17240 USING v_property_record_ref(v_remote_prop_ref(i)).NAME, v_property_record_ref(v_remote_prop_ref(i)).src_application_id;
17241
17242 IF (v_null <> v_property_record_ref(v_remote_prop_ref(i)).data_type)
17243 THEN
17244 --~> 'Property ''%PROPERTYNAME'' has a different data type on the target instance.'
17245 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_PROPERTY', 'PROPERTYNAME', v_property_record_ref(v_remote_prop_ref(i)).NAME);
17246 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17247 v_error_flag := 1;
17248 END IF;
17249 EXCEPTION
17250 WHEN NO_DATA_FOUND
17251 THEN
17252 NULL;
17253 END;
17254 END LOOP;
17255
17256 FOR i IN 1 .. v_item_types_new_ref.COUNT
17257 LOOP
17258 BEGIN
17259 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_types'
17260 || cz_pb_mgr.v_db_link
17261 || 'it '
17262 || ' WHERE it.deleted_flag = ''0'''
17263 || ' AND it.name = :1'
17264 || ' AND NVL(it.src_application_id, 0) = :2'
17265 INTO v_null
17266 USING v_type_record_ref(v_item_types_new_ref(i)).NAME, v_type_record_ref(v_item_types_new_ref(i)).src_application_id;
17267
17268 j := v_type_property_record_ref(v_item_types_new_ref(i)).FIRST;
17269
17270 WHILE(j IS NOT NULL)
17271 LOOP
17272 BEGIN
17273 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_types'
17274 || cz_pb_mgr.v_db_link
17275 || 'it, '
17276 || ' cz_item_type_properties'
17277 || cz_pb_mgr.v_db_link
17278 || 'tp, '
17279 || ' cz_properties'
17280 || cz_pb_mgr.v_db_link
17281 || ' pr '
17282 || ' WHERE it.deleted_flag = ''0'''
17283 || ' AND pr.deleted_flag = ''0'''
17284 || ' AND tp.deleted_flag = ''0'''
17285 || ' AND it.item_type_id = tp.item_type_id'
17286 || ' AND pr.property_id = tp.property_id'
17287 || ' AND it.name = :1'
17288 || ' AND NVL(it.src_application_id, 0) = :2'
17289 || ' AND pr.name = :3'
17290 || ' AND NVL(pr.src_application_id, 0) = :4'
17291 INTO v_null
17292 USING v_type_record_ref(v_item_types_new_ref(i)).NAME
17293 ,v_type_record_ref(v_item_types_new_ref(i)).src_application_id
17294 ,v_type_property_record_ref(v_item_types_new_ref(i))(j).NAME
17295 ,v_type_property_record_ref(v_item_types_new_ref(i))(j).src_application_id;
17296 EXCEPTION
17297 WHEN NO_DATA_FOUND
17298 THEN
17299 v_error_flag := 1;
17300 --~> 'Item type ''%ITEMTYPENAME'' has a different combination of properties on the target instance.'
17301 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_ITEMTYPE', 'ITEMTYPENAME', v_type_record_ref(v_item_types_new_ref(i)).NAME);
17302 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17303 END;
17304
17305 j := v_type_property_record_ref(v_item_types_new_ref(i)).NEXT(j);
17306 END LOOP;
17307 EXCEPTION
17308 WHEN NO_DATA_FOUND
17309 THEN
17310 NULL;
17311 END;
17312 END LOOP;
17313
17314 FOR i IN 1 .. v_item_masters_tbl.COUNT
17315 LOOP
17316
17317 --Bug #6972667. This query can return several items with the same ref_part_nbr in different item types.
17318 --Judging from the SELECT NULL and empty exception block for no_data_found, the only purpose of this
17319 --query is to skip the second verification for items that don't exist on the target, so we can just
17320 --use BULK COLLECT.
17321
17322 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_masters'
17323 || cz_pb_mgr.v_db_link
17324 || ' it '
17325 || ' WHERE it.deleted_flag = ''0'''
17326 || ' AND it.ref_part_nbr = :1'
17327 || ' AND NVL(it.src_application_id, 0) = :2'
17328 || ' AND NVL(it.orig_sys_ref, ''0'') = :3'
17329 BULK COLLECT INTO v_null_table
17330 USING mm_v_itmst_ref_part_nbr_ref(i)
17331 , mm_v_itmst_src_app_id_ref(i)
17332 --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
17333 --source item_id
17334 , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
17335
17336 IF ( v_null_table.COUNT > 0 ) THEN
17337
17338 BEGIN
17339 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_masters'
17340 || cz_pb_mgr.v_db_link
17341 || ' it, '
17342 || ' cz_item_types'
17343 || cz_pb_mgr.v_db_link
17344 || ' ip '
17345 || ' WHERE it.deleted_flag = ''0'''
17346 || ' AND ip.deleted_flag = ''0'''
17347 || ' AND it.ref_part_nbr = :1'
17348 || ' AND NVL(it.src_application_id, 0) = :2'
17349 || ' AND ip.name = :3'
17350 || ' AND NVL(ip.src_application_id, 0) = :4'
17351 || ' AND NVL(it.orig_sys_ref, ''0'') = :5'
17352
17353 --Bug #6972667. Missing join condition.
17354
17355 || ' AND ip.item_type_id = it.item_type_id'
17356 INTO v_null
17357 USING mm_v_itmst_ref_part_nbr_ref(i)
17358 , mm_v_itmst_src_app_id_ref(i)
17359 , v_type_record_ref(v_item_types_tbl(i)).NAME
17360 , v_type_record_ref(v_item_types_tbl(i)).src_application_id
17361 --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
17362 --source item_id
17363 , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
17364 EXCEPTION
17365 WHEN NO_DATA_FOUND
17366 THEN
17367 v_error_flag := 1;
17368 --~> 'Item ''%ITEMNAME'' has a different item type on the target instance.'
17369 -- Bug 5219852; 06-Sep-2006; kdande; Modified the message to show the source and target item type names
17370 EXECUTE IMMEDIATE 'SELECT ip.name FROM cz_item_masters'
17371 || cz_pb_mgr.v_db_link
17372 || ' it, cz_item_types'
17373 || cz_pb_mgr.v_db_link
17374 || ' ip '
17375 || ' WHERE it.deleted_flag = ''0'''
17376 || ' AND ip.deleted_flag = ''0'''
17377 || ' AND it.ref_part_nbr = :1'
17378 || ' AND ip.item_type_id = it.item_type_id'
17379 || ' AND NVL(it.src_application_id, 0) = :2'
17380 || ' AND NVL(it.orig_sys_ref, ''0'') = :3'
17381 INTO v_target_item_type_name
17382 USING mm_v_itmst_ref_part_nbr_ref(i)
17383 , mm_v_itmst_src_app_id_ref(i)
17384 --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
17385 --source item_id
17386 , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
17387 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_ITEM', 'ITEMNAME', mm_v_itmst_ref_part_nbr_ref(i),
17388 'SRCNAME', v_type_record_ref(v_item_types_tbl(i)).NAME,
17389 'TGTNAME', v_target_item_type_name);
17390 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17391 END;
17392 END IF; --v_null_table.COUNT > 0
17393 END LOOP;
17394
17395 IF (v_error_flag = 1)
17396 THEN
17397 RAISE cz_pb_global_synch;
17398 END IF;
17399 EXCEPTION
17400 WHEN cz_pb_global_synch
17401 THEN
17402 RAISE;
17403 WHEN OTHERS
17404 THEN
17405 --~>'Unexpected error during upfront validation: %ERRORTEXT'
17406 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_UNEXPECTED', 'ERRORTEXT', SQLERRM);
17407 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17408 RAISE;
17409 END mm_raiseallpossiblesyncerrors;
17410 ------------------------------------------------------------------------------------------------
17411 --Bug #5186307. The bug is deferred.
17412 /*
17413 PROCEDURE split_item_origsysref( p_origsysref IN VARCHAR2
17414 , x_item_id OUT NOCOPY NUMBER
17415 , x_org_id OUT NOCOPY NUMBER) IS
17416 BEGIN
17417
17418 --The values can only be not null valid numbers, otherwise TO_NUMBER will fail.
17419
17420 x_item_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, 1, INSTR(p_origsysref, ':') - 1), 'NULL'));
17421 x_org_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, INSTR(p_origsysref, ':') + 1), 'NULL'));
17422 END;
17423 */
17424 ------------------------------------------------------------------------------------------------
17425 --Bug #5186307. The bug is deferred, the function just returns the parameter.
17426 /*
17427 FUNCTION synch_item_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
17428
17429 l_item_id NUMBER;
17430 l_org_id NUMBER;
17431 BEGIN
17432
17433 IF(p_origsysref IS NULL)THEN
17434
17435 --This is an item with source application INV and null orig_sys_ref. Don't do anything for now,
17436 --but this may be a problem. Not sure if this can happen here, may be caught earlier.
17437
17438 RETURN NULL;
17439 END IF;
17440
17441 IF(v_item_synched_osr.EXISTS(p_origsysref))THEN RETURN v_item_synched_osr(p_origsysref); END IF;
17442
17443 --Just return the parameter.
17444
17445 --split_item_origsysref(p_origsysref, l_item_id, l_org_id);
17446
17447 v_item_synched_osr(p_origsysref) := p_origsysref;
17448 RETURN v_item_synched_osr(p_origsysref);
17449 END;
17450 */
17451 ------------------------------------------------------------------------------------------------
17452 --Bug #5186307. The bug is deferred, the function just returns the parameter.
17453 /*
17454 FUNCTION synch_itemtype_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
17455
17456 l_catalog_id NUMBER;
17457 BEGIN
17458
17459 IF(p_origsysref IS NULL)THEN
17460
17461 --This is an item type with source application INV and null orig_sys_ref. Don't do anything for
17462 --now, but this may be a problem. Not sure if this can happen here, may be caught earlier.
17463
17464 RETURN NULL;
17465 END IF;
17466
17467 IF(v_itemtype_synched_osr.EXISTS(p_origsysref))THEN RETURN v_itemtype_synched_osr(p_origsysref); END IF;
17468
17469 --The value can only be a valid not null number.
17470
17471 l_catalog_id := TO_NUMBER(p_origsysref);
17472
17473 --Just return the parameter.
17474
17475 v_itemtype_synched_osr(p_origsysref) := p_origsysref;
17476 RETURN v_itemtype_synched_osr(p_origsysref);
17477 END;
17478 */
17479 ------------------------------------------------------------------------------------------------
17480 --This procedure reads the item/property data into the arrays, previously done by insert_item_schema,
17481 --and performs the upfron validations for model migration.
17482 PROCEDURE read_item_schema
17483 IS
17484 v_cz_items_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
17485 v_cz_types_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
17486 v_item_types_orig_tbl cz_pb_mgr.orig_sys_ref_type;
17487 v_remote_prop_tbl cz_pb_mgr.t_ref;
17488 v_prop_type_tbl cz_pb_mgr.t_ref;
17489 v_prop_src_app_tbl cz_pb_mgr.t_ref;
17490 v_prop_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
17491 v_type_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
17492 v_type_src_app_tbl cz_pb_mgr.t_ref;
17493 v_bom_flg_tbl cz_pb_mgr.t_ref;
17494 v_bom_flg_ref cz_pb_mgr.t_ref;
17495 plsql_table_list cz_pb_mgr.col_plsql_table_list;
17496 rec_count NUMBER;
17497 mm_v_itmst_ref_part_nbr_tbl varchar_type_4000_tbl;
17498 mm_v_itmst_src_app_id_tbl t_ref;
17499 BEGIN
17500 ---COLLECT ALL THE SOURCE ITEM MASTER RECORDS
17501 IF (cz_pb_mgr.v_ps_item_id_tbl.COUNT > 0)
17502 THEN
17503 cz_pb_mgr.v_item_masters_tbl.DELETE;
17504 cz_pb_mgr.v_item_types_tbl.DELETE;
17505 cz_pb_mgr.v_items_orig_ref.DELETE;
17506
17507 FOR i IN cz_pb_mgr.v_ps_item_id_tbl.FIRST .. cz_pb_mgr.v_ps_item_id_tbl.LAST
17508 LOOP
17509 cz_pb_mgr.v_item_masters_ref.DELETE;
17510 cz_pb_mgr.v_item_types_ref.DELETE;
17511 v_bom_flg_tbl.DELETE;
17512 v_item_types_orig_tbl.DELETE;
17513
17514 -- Bug9619157. As a part of the investigation this was one new issue found where
17515 -- item for the reference BOM node was not resolved. Hence subsequence code has been added
17516 -- to take care of item of ps_node_type=263 with src_application not null
17517
17518 BEGIN
17519 IF ((cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_BOM_MODEL)
17520 OR(cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_BOM_OPTIONCLASS) OR(cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_BOM_STANDARD)
17521 OR(cz_pb_mgr.v_ps_type_old_tbl(i) = PS_NODE_TYPE_REFERENCE AND cz_pb_mgr.v_ps_src_appl_id_old_tbl(i) = SRC_APPL_ID_BOM))
17522 THEN
17523 SELECT item_id, item_type_id
17524 ,DECODE(cz_pb_mgr.bomsynch_flag
17525 ,'Y', NVL(cz_bom_synch.itemmaster_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
17526 ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
17527 )
17528 ,bom_item, ref_part_nbr, NVL(src_application_id, 0)
17529 BULK COLLECT INTO cz_pb_mgr.v_item_masters_ref, cz_pb_mgr.v_item_types_ref
17530 ,v_item_types_orig_tbl
17531 ,v_bom_flg_tbl, mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
17532 FROM cz_item_masters
17533 WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
17534 AND cz_item_masters.item_id IS NOT NULL
17535 AND cz_item_masters.deleted_flag = '0';
17536 ELSE
17537 SELECT item_id, item_type_id, orig_sys_ref, nonbom_item
17538 ,ref_part_nbr, NVL(src_application_id, 0)
17539 BULK COLLECT INTO cz_pb_mgr.v_item_masters_ref, cz_pb_mgr.v_item_types_ref, v_item_types_orig_tbl, v_bom_flg_tbl
17540 ,mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
17541 FROM cz_item_masters
17542 WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
17543 AND cz_item_masters.item_id IS NOT NULL
17544 AND cz_item_masters.deleted_flag = '0';
17545 END IF;
17546 EXCEPTION
17547 WHEN NO_DATA_FOUND
17548 THEN
17549 -----if no items exist, logging a message is not required
17550 NULL;
17551 WHEN OTHERS
17552 THEN
17553 RAISE;
17554 END;
17555
17556 rec_count := cz_pb_mgr.v_item_masters_tbl.COUNT;
17557
17558 IF (cz_pb_mgr.v_item_masters_ref.COUNT > 0)
17559 THEN
17560 FOR k IN cz_pb_mgr.v_item_masters_ref.FIRST .. cz_pb_mgr.v_item_masters_ref.LAST
17561 LOOP
17562 IF (cz_pb_mgr.v_item_masters_ref(k) IS NOT NULL)
17563 THEN
17564 IF (NOT v_cz_items_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_masters_ref(k)))
17565 THEN
17566 rec_count := rec_count + 1;
17567 cz_pb_mgr.v_item_masters_tbl(rec_count) := cz_pb_mgr.v_item_masters_ref(k);
17568 cz_pb_mgr.mm_v_itmst_ref_part_nbr_ref(rec_count) := mm_v_itmst_ref_part_nbr_tbl(k);
17569 cz_pb_mgr.mm_v_itmst_src_app_id_ref(rec_count) := mm_v_itmst_src_app_id_tbl(k);
17570 cz_pb_mgr.v_item_types_tbl(rec_count) := cz_pb_mgr.v_item_types_ref(k);
17571 cz_pb_mgr.v_items_orig_ref(rec_count) := v_item_types_orig_tbl(k);
17572 --for model migration, maintain a sync table to get the
17573 --orig_sys_ref from a given item
17574 mm_v_ht_items_orig_ref(cz_pb_mgr.v_item_masters_ref(k)) := v_item_types_orig_tbl(k);
17575 v_cz_items_old_ref_idx_ref(cz_pb_mgr.v_item_masters_ref(k)) := cz_pb_mgr.v_item_masters_ref(k);
17576 v_bom_flg_ref(rec_count) := v_bom_flg_tbl(k);
17577 END IF;
17578 END IF;
17579 END LOOP;
17580 END IF; /* end if of cz_pb_mgr.v_item_masters_ref.COUNT > 0 */
17581 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
17582 END IF; /* end if of cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
17583
17584 IF (cz_pb_mgr.v_item_types_tbl.COUNT > 0)
17585 THEN
17586 cz_pb_mgr.v_item_types_new_ref.DELETE;
17587 cz_pb_mgr.v_item_types_orig_ref.DELETE;
17588 v_cz_types_old_ref_idx_ref.DELETE;
17589
17590 FOR i IN cz_pb_mgr.v_item_types_tbl.FIRST .. cz_pb_mgr.v_item_types_tbl.LAST
17591 LOOP
17592 v_item_types_orig_tbl.DELETE;
17593 cz_pb_mgr.v_item_types_ref.DELETE;
17594
17595 BEGIN
17596 IF ((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = bom_item))
17597 THEN
17598 SELECT item_type_id, NAME, NVL(src_application_id, 0)
17599 ,DECODE(cz_pb_mgr.bomsynch_flag
17600 ,'Y', NVL(cz_bom_synch.itemtype_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
17601 ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
17602 )
17603 BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl
17604 ,v_item_types_orig_tbl
17605 FROM cz_item_types
17606 WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
17607 ELSIF((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = nonbom_item))
17608 THEN
17609 SELECT item_type_id, NAME, NVL(src_application_id, 0), orig_sys_ref
17610 BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl, v_item_types_orig_tbl
17611 FROM cz_item_types
17612 WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
17613 END IF;
17614 EXCEPTION
17615 WHEN NO_DATA_FOUND
17616 THEN
17617 NULL;
17618 WHEN OTHERS
17619 THEN
17620 RAISE;
17621 END;
17622
17623 IF (cz_pb_mgr.v_item_types_ref.COUNT > 0)
17624 THEN
17625 FOR k IN cz_pb_mgr.v_item_types_ref.FIRST .. cz_pb_mgr.v_item_types_ref.LAST
17626 LOOP
17627 IF (cz_pb_mgr.v_item_types_ref(k) IS NOT NULL)
17628 THEN
17629 IF (NOT v_cz_types_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_types_ref(k)))
17630 THEN
17631 rec_count := cz_pb_mgr.v_item_types_new_ref.COUNT + 1;
17632 cz_pb_mgr.v_item_types_new_ref(rec_count) := cz_pb_mgr.v_item_types_ref(k);
17633 cz_pb_mgr.v_item_types_orig_ref(rec_count) := v_item_types_orig_tbl(k);
17634 --for model migration, maintain a sync table to get the
17635 --orig_sys_ref from a given item type
17636 mm_v_ht_item_types_orig_ref(cz_pb_mgr.v_item_types_ref(k)) := v_item_types_orig_tbl(k);
17637 v_cz_types_old_ref_idx_ref(cz_pb_mgr.v_item_types_ref(k)) := cz_pb_mgr.v_item_types_ref(k);
17638 v_type_record_ref(v_item_types_ref(k)).NAME := v_type_name_tbl(k);
17639 v_type_record_ref(v_item_types_ref(k)).src_application_id := v_type_src_app_tbl(k);
17640 END IF;
17641 END IF;
17642 END LOOP;
17643 END IF;
17644 END LOOP;
17645 END IF;
17646
17647 --~> Properties
17648 cz_pb_mgr.v_remote_prop_ref.DELETE;
17649 v_property_record_ref.DELETE;
17650
17651 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17652 THEN
17653 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17654 LOOP
17655 v_remote_prop_tbl.DELETE;
17656 BEGIN
17657 SELECT property_id, data_type, name, src_application_id
17658 BULK COLLECT INTO v_remote_prop_tbl, v_prop_type_tbl, v_prop_name_tbl, v_prop_src_app_tbl
17659 FROM (SELECT itp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
17660 from cz_item_masters im, cz_item_type_properties itp, cz_ps_nodes psn, cz_properties p
17661 where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.deleted_flag = '0'
17662 and psn.item_id = im.item_id AND im.deleted_flag = '0' and im.item_type_id = itp.item_type_id
17663 AND itp.deleted_flag = '0' and itp.property_id = p.property_id and p.deleted_flag = '0'
17664 UNION
17665 SELECT psp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
17666 from cz_ps_prop_vals psp, cz_ps_nodes psn, cz_properties p
17667 where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.ps_node_id = psp.ps_node_id
17668 and psn.deleted_flag = '0' AND psp.deleted_Flag = '0' and psp.property_id = p.property_id
17669 and p.deleted_flag = '0'
17670 UNION
17671 SELECT ipv.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
17672 from cz_ps_nodes psn, cz_item_property_values ipv, cz_properties p
17673 where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.item_id = ipv.item_id
17674 and psn.deleted_flag = '0' and ipv.deleted_flag = '0' and ipv.property_id = p.property_id
17675 and p.deleted_flag = '0');
17676
17677 EXCEPTION
17678 WHEN no_data_found THEN
17679 NULL;
17680 WHEN OTHERS THEN
17681 log_pb_errors(SQLERRM,1,'cz_pb_mgr PROP SELECT',SQLCODE);
17682 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17683 RAISE;
17684 END;
17685
17686 IF (v_remote_prop_tbl.COUNT > 0)
17687 THEN
17688 FOR j IN v_remote_prop_tbl.FIRST .. v_remote_prop_tbl.LAST
17689 LOOP
17690 IF (v_remote_prop_tbl(j) IS NOT NULL)
17691 THEN
17692 rec_count := cz_pb_mgr.v_remote_prop_ref.COUNT + 1;
17693 cz_pb_mgr.v_remote_prop_ref(rec_count) := v_remote_prop_tbl(j);
17694
17695 IF (NOT v_property_record_ref.EXISTS(v_remote_prop_tbl(j)))
17696 THEN
17697 v_property_record_ref(v_remote_prop_tbl(j)).NAME := v_prop_name_tbl(j);
17698 v_property_record_ref(v_remote_prop_tbl(j)).data_type := v_prop_type_tbl(j);
17699 v_property_record_ref(v_remote_prop_tbl(j)).src_application_id := v_prop_src_app_tbl(j);
17700 END IF;
17701 END IF;
17702 END LOOP;
17703 END IF;
17704 END LOOP;
17705 END IF;
17706
17707 -- The copy of item type props and item prop values is uncessary for publication (4861805)
17708 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
17709 --~> Item type properties
17710 IF (cz_pb_mgr.v_item_types_new_ref.COUNT > 0)
17711 THEN
17712 cz_pb_mgr.v_item_prop_id_tbl.DELETE;
17713 cz_pb_mgr.v_item_prop_type_tbl.DELETE;
17714 cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
17715 cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
17716
17717 FOR i IN cz_pb_mgr.v_item_types_new_ref.FIRST .. cz_pb_mgr.v_item_types_new_ref.LAST
17718 LOOP
17719 cz_pb_mgr.v_item_prop_id_ref.DELETE;
17720 cz_pb_mgr.v_item_prop_type_ref.DELETE;
17721 cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
17722 cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
17723 cz_pb_mgr.v_tgt_item_type_prop_orig_ref.DELETE; --Bug9031588
17724 cz_pb_mgr.v_src_item_type_prop_orig_ref.DELETE; --Bug9031588
17725 BEGIN
17726 SELECT itp.property_id, itp.item_type_id,p.def_num_value, p.data_type
17727 ,DECODE (cz_pb_mgr.bomsynch_flag
17728 ,'Y', NVL(cz_bom_synch.itemtypeprop_origsysref(itp.orig_sys_ref), cz_pb_mgr.null_string)
17729 ,NVL(itp.orig_sys_ref, cz_pb_mgr.null_string)),NVL(itp.orig_sys_ref, cz_pb_mgr.null_string)
17730 BULK COLLECT INTO cz_pb_mgr.v_item_prop_id_ref, cz_pb_mgr.v_item_prop_type_ref
17731 ,cz_pb_mgr.v_item_prop_num_val_ref, cz_pb_mgr.v_item_prop_data_typ_ref
17732 ,v_tgt_item_type_prop_orig_ref, v_src_item_type_prop_orig_ref
17733 FROM cz_item_type_properties itp, cz_properties p
17734 WHERE itp.item_type_id = cz_pb_mgr.v_item_types_new_ref(i)
17735 AND p.deleted_flag = '0'
17736 AND itp.property_id =p.property_id
17737 AND itp.deleted_flag = '0';
17738 EXCEPTION
17739 WHEN NO_DATA_FOUND
17740 THEN
17741 NULL;
17742 WHEN OTHERS
17743 THEN
17744 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_item_type_properties', 'SQLERRM', SQLERRM);
17745 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPE', SQLCODE);
17746 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17747 END;
17748
17749 rec_count := cz_pb_mgr.v_item_prop_id_tbl.COUNT;
17750
17751 IF (cz_pb_mgr.v_item_prop_id_ref.COUNT > 0)
17752 THEN
17753 FOR k IN cz_pb_mgr.v_item_prop_id_ref.FIRST .. cz_pb_mgr.v_item_prop_id_ref.LAST
17754 LOOP
17755 rec_count := rec_count + 1;
17756 cz_pb_mgr.v_item_prop_id_tbl(rec_count) := cz_pb_mgr.v_item_prop_id_ref(k);
17757 cz_pb_mgr.v_item_prop_type_tbl(rec_count) := cz_pb_mgr.v_item_prop_type_ref(k);
17758 cz_pb_mgr.v_item_prop_num_val_tbl(rec_count):=cz_pb_mgr.v_item_prop_num_val_ref(k);
17759 cz_pb_mgr.v_item_prop_data_typ_tbl(rec_count):=cz_pb_mgr.v_item_prop_data_typ_ref(k);
17760 cz_pb_mgr.v_tgt_type_prop_orig_tbl(rec_count):=cz_pb_mgr.v_tgt_item_type_prop_orig_ref(k); --Bug9031588
17761 cz_pb_mgr.v_src_type_prop_orig_tbl(rec_count):=cz_pb_mgr.v_src_item_type_prop_orig_ref(k); --Bug9031588
17762 v_type_property_record_ref(v_item_prop_type_ref(k))(v_item_prop_id_ref(k)) := v_property_record_ref(v_item_prop_id_ref(k));
17763 mm_v_ht_item_typ_prop_orig_ref(v_src_item_type_prop_orig_ref(k)) := v_tgt_item_type_prop_orig_ref(k); --Bug9031588
17764 END LOOP;
17765 END IF;
17766 END LOOP; -- end loop of FOR I IN cz_pb_mgr.v_item_types_tbl
17767 END IF; -- cz_pb_mgr.v_item_types_new_ref.COUNT > 0
17768
17769 IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
17770 THEN
17771 cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
17772 cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
17773
17774 FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
17775 LOOP
17776 cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
17777 cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
17778 cz_pb_mgr.v_it_prop_value_ref.DELETE;
17779 cz_pb_mgr.v_tgt_item_prop_val_orig_ref.DELETE; --Bug9031588
17780 cz_pb_mgr.v_src_item_prop_val_orig_ref.DELETE; --Bug9031588
17781
17782 BEGIN
17783 SELECT property_id, item_id
17784 ,DECODE(cz_pb_mgr.bomsynch_flag
17785 ,'Y', NVL(cz_bom_synch.itempropvalues_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
17786 , NVL(orig_sys_ref, cz_pb_mgr.null_string)
17787 ),NVL(orig_sys_ref, cz_pb_mgr.null_string)
17788 BULK COLLECT INTO cz_pb_mgr.v_it_prop_vals_id_ref, cz_pb_mgr.v_it_prop_vals_item_ref
17789 ,v_tgt_item_prop_val_orig_ref,v_src_item_prop_val_orig_ref
17790 FROM cz_item_property_values
17791 WHERE item_id = cz_pb_mgr.v_item_masters_tbl(i) AND deleted_flag = '0';
17792 EXCEPTION
17793 WHEN NO_DATA_FOUND
17794 THEN
17795 cz_pb_mgr.v_err_message := 'No item property value found for item id: ' || TO_CHAR(cz_pb_mgr.v_item_masters_tbl(i));
17796 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPES', SQLCODE);
17797 WHEN OTHERS
17798 THEN
17799 RAISE;
17800 END;
17801
17802 rec_count := cz_pb_mgr.v_it_prop_vals_id_tbl.COUNT;
17803
17804 IF (cz_pb_mgr.v_it_prop_vals_id_ref.COUNT > 0)
17805 THEN
17806 FOR k IN cz_pb_mgr.v_it_prop_vals_id_ref.FIRST .. cz_pb_mgr.v_it_prop_vals_id_ref.LAST
17807 LOOP
17808 rec_count := rec_count + 1;
17809 cz_pb_mgr.v_it_prop_vals_id_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_id_ref(k);
17810 cz_pb_mgr.v_it_prop_vals_item_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_item_ref(k);
17811 cz_pb_mgr.v_tgt_prop_val_orig_tbl(rec_count) := cz_pb_mgr.v_tgt_item_prop_val_orig_ref(k); --Bug9031588
17812 cz_pb_mgr.v_src_prop_val_orig_tbl(rec_count) := cz_pb_mgr.v_src_item_prop_val_orig_ref(k); --Bug9031588
17813 mm_v_ht_item_prop_val_orig_ref(v_src_item_prop_val_orig_ref(k)) := v_tgt_item_prop_val_orig_ref(k); --Bug9031588
17814 END LOOP;
17815 END IF;
17816 END LOOP; -- end loop of FOR I IN cz_pb_mgr.v_item_masters_tbl
17817 END IF; -- end if of cz_pb_mgr.v_item_masters_tbl.COUNT > 0
17818 END IF;
17819
17820 --Bug #5186307. Some of the item and item types can be bom, although corresponding ps nodes and the whole
17821 --model can be non-bom (item-based ps nodes and populators). For a non-bom model bom synchronization will
17822 --not be called, and it is just impossible to call it. However, the orig_sys_refs of the bom items and
17823 --item types still need to be synchronized. The following code implements this synchronization for a non-
17824 --bom model.
17825
17826 --The bug is deferred.
17827 /*
17828 IF(cz_pb_mgr.bomsynch_flag = 'N' AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)THEN
17829
17830 FOR i IN 1..v_item_masters_tbl.COUNT LOOP
17831
17832 IF(mm_v_itmst_src_app_id_ref(i) = 401)THEN
17833
17834 v_items_orig_ref(i) := synch_item_origsysref(v_items_orig_ref(i));
17835 END IF;
17836 END LOOP;
17837
17838 FOR i IN 1..v_item_types_new_ref.COUNT LOOP
17839
17840 IF(v_type_record_ref(v_item_types_new_ref(i)).src_application_id = 702)THEN
17841
17842 v_item_types_orig_ref(i) := synch_itemtype_origsysref(v_item_types_orig_ref(i));
17843 END IF;
17844 END LOOP;
17845 END IF;
17846 */
17847 --Now run the upfront validations for model migration.
17848 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17849 THEN
17850 mm_raiseallpossiblesyncerrors;
17851 END IF;
17852 END;
17853 -----------------------------------------------------------------------------------------------------
17854 -------------- Load data : procedure used to export data
17855 PROCEDURE load_data(
17856 v_publication_id IN cz_model_publications.publication_id%TYPE
17857 ,v_root_model_id IN cz_model_publications.model_id%TYPE
17858 ,v_server_id IN cz_model_publications.server_id%TYPE
17859 ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
17860 ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
17861 )
17862 AS
17863 v_db_link VARCHAR2(128);
17864 seq_cv ref_cursor;
17865 rec_count PLS_INTEGER := 0;
17866 resolution_status VARCHAR2(200);
17867 v_copy_rules_flag VARCHAR2(3) := '';
17868 plsql_table_list cz_pb_mgr.col_plsql_table_list;
17869 BEGIN
17870 -------select value of setting id CopyRules from cz_db_settings
17871 IF (cz_pb_mgr.g_log_timing = publication_timing)
17872 THEN
17873 log_timing_message('start get_copy_rules_flg');
17874 END IF;
17875
17876 get_copy_rules_flg(v_copy_rules_flag);
17877
17878 IF (cz_pb_mgr.g_log_timing = publication_timing)
17879 THEN
17880 log_timing_message('end get_copy_rules_flg: copy_rules_flag='||v_copy_rules_flag);
17881 END IF;
17882
17883 IF (copy_rules = 'NO')
17884 THEN
17885 v_copy_rules_flag := 'NO';
17886 END IF;
17887
17888 ---------check languages on source and target instances
17889 IF (cz_pb_mgr.g_log_timing = publication_timing)
17890 THEN
17891 log_timing_message('start pb_language_check');
17892 END IF;
17893
17894 pb_language_check;
17895
17896 --- To get the single language from cz_db_settins -- SKM
17897 get_single_pb_language;
17898
17899 --- BulkSelectInsert() Call -- SKM
17900 get_remote_select_insert;
17901
17902 IF (cz_pb_mgr.g_log_timing = publication_timing)
17903 THEN
17904 log_timing_message('end pb_language_check');
17905 END IF;
17906
17907 -- load the ps nodes needed for ps_prop_vals and items
17908 -- this process of getting all the ps node information used to happen in upload_ps_structure, but
17909 -- model migration needed this to happen much before that
17910 mm_v_ht_item_types_orig_ref.DELETE;
17911 mm_v_ht_items_orig_ref.DELETE;
17912 mm_loadoldpsnodesforitems;
17913 IF (cz_pb_mgr.v_server_id <> 0 ) THEN
17914 read_item_schema;
17915 END IF;
17916
17917 --------upload item sub-schema
17918 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17919 THEN
17920 IF (cz_pb_mgr.g_log_timing = publication_timing)
17921 THEN
17922 log_timing_message('start upload_item_schema');
17923 END IF;
17924
17925 --upload_item_schema used to to happen after upload_ps_structure, upload_ui_schema
17926 --but model migration required this to happen earlier. Moving this did not seem to affect
17927 --publication.
17928 upload_item_schema(cz_pb_mgr.v_cz_ps_nodes_old_tbl, cz_pb_mgr.v_status_code);
17929
17930 IF (cz_pb_mgr.g_log_timing = publication_timing)
17931 THEN
17932 log_timing_message('end upload_item_schema');
17933 END IF;
17934 END IF;
17935
17936 ------export product structure
17937 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17938 THEN
17939 IF (cz_pb_mgr.g_log_timing = publication_timing)
17940 THEN
17941 log_timing_message('start upload_ps_structure');
17942 END IF;
17943
17944 upload_ps_structure(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
17945
17946 IF (cz_pb_mgr.g_log_timing = publication_timing)
17947 THEN
17948 log_timing_message('end upload_ps_structure');
17949 END IF;
17950 END IF;
17951
17952 --------------upload UI Schema
17953 IF (cz_pb_mgr.g_log_timing = publication_timing)
17954 THEN
17955 log_timing_message('start upload_ui_schema');
17956 END IF;
17957
17958 upload_ui_schema(cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code, p_copy_nonjradui);
17959
17960 IF (cz_pb_mgr.g_log_timing = publication_timing)
17961 THEN
17962 log_timing_message('end upload_ui_schema');
17963 END IF;
17964
17965 ------upload rule schema
17966 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17967 THEN
17968 IF (cz_pb_mgr.g_log_timing = publication_timing)
17969 THEN
17970 log_timing_message('start upload_rule_schema');
17971 END IF;
17972
17973 upload_rule_schema(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
17974
17975 IF (cz_pb_mgr.g_log_timing = publication_timing)
17976 THEN
17977 log_timing_message('end upload_rule_schema');
17978 END IF;
17979 END IF;
17980
17981 x_status_code := cz_pb_mgr.v_status_code;
17982 EXCEPTION
17983 WHEN cz_pb_global_synch
17984 THEN
17985 --~> 'Errors in upfront validation, unable to continue.'
17986 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPVAL_ERRORS');
17987 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
17988 x_status_code := PUBLICATION_ERROR;
17989 WHEN pb_upload_ps_schema
17990 THEN
17991 cz_pb_mgr.v_err_message := 'Error in export of product structure for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
17992 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PRODSTRUCTURE', SQLCODE);
17993 x_status_code := PUBLICATION_ERROR;
17994 WHEN pb_upload_ui_schema
17995 THEN
17996 cz_pb_mgr.v_err_message := 'Error in upload of UI schema for publication id : ' || cz_pb_mgr.v_publication_id;
17997 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
17998 x_status_code := PUBLICATION_ERROR;
17999 WHEN pb_upload_rule_schema
18000 THEN
18001 cz_pb_mgr.v_err_message := 'Error in upload of RULE schema for publication id : ' || cz_pb_mgr.v_publication_id || ':' || SQLERRM;
18002 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADRULESCHEMA', SQLCODE);
18003 x_status_code := PUBLICATION_ERROR;
18004 WHEN pb_upload_item_schema
18005 THEN
18006 cz_pb_mgr.v_err_message := 'Error in upload of ITEM schema for publication id : ' || cz_pb_mgr.v_publication_id;
18007 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADITEMSCHEMA', SQLCODE);
18008 x_status_code := PUBLICATION_ERROR;
18009 WHEN OTHERS
18010 THEN
18011 x_status_code := PUBLICATION_ERROR;
18012 cz_pb_mgr.v_err_message := 'Fatal error occured during data upload ';
18013 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ENDLOADDATA', SQLCODE);
18014 END load_data;
18015
18016 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18017 PROCEDURE insert_tmp_pub(p_temp_id IN NUMBER)
18018 IS
18019 l_old_publication_id NUMBER;
18020 l_remote_publication_id NUMBER;
18021 l_new_publication_id NUMBER;
18022 v_inst_str VARCHAR2(2000);
18023 BEGIN
18024 v_inst_str :=
18025 'UPDATE cz_model_publications set deleted_flag = ''1'' WHERE object_id := :1 '
18026 || ' '
18027 || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
18028
18029 EXECUTE IMMEDIATE v_inst_str
18030 USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
18031
18032 COMMIT;
18033 v_inst_str :=
18034 'UPDATE cz_model_publications'
18035 || cz_pb_mgr.v_db_link
18036 || ' set deleted_flag = ''1'' WHERE object_id := :1'
18037 || ' '
18038 || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
18039
18040 EXECUTE IMMEDIATE v_inst_str
18041 USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
18042
18043 COMMIT;
18044
18045 SELECT cz_model_publications_s.NEXTVAL
18046 INTO l_old_publication_id
18047 FROM DUAL;
18048
18049 l_remote_publication_id :=
18050 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
18051 , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
18052 ,cz_pb_mgr.v_oraclesequenceincr
18053 );
18054 v_inst_str :=
18055 'INSERT INTO cz_model_publications'
18056 || ' '
18057 || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
18058 || ' '
18059 || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
18060 || ' '
18061 || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
18062 || ' '
18063 || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
18064 || ' '
18065 || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
18066 || ' '
18067 || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
18068 || ' '
18069 || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
18070 || g_source_flag
18071 || ''',:4,SOURCE_UI_DEF_ID,'
18072 || ' '
18073 || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag FROM DUAL ';
18074
18075 EXECUTE IMMEDIATE v_inst_str
18076 USING l_old_publication_id, p_temp_id, p_temp_id, l_remote_publication_id;
18077
18078 v_inst_str :=
18079 'INSERT INTO cz_model_publications'
18080 || cz_pb_mgr.v_db_link
18081 || ''
18082 || ' '
18083 || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
18084 || ' '
18085 || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
18086 || ' '
18087 || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
18088 || ' '
18089 || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
18090 || ' '
18091 || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
18092 || ' '
18093 || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
18094 || ' '
18095 || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
18096 || g_target_flag
18097 || ''',:4,SOURCE_UI_DEF_ID,'
18098 || ' '
18099 || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag FROM DUAL ';
18100
18101 EXECUTE IMMEDIATE v_inst_str
18102 USING l_remote_publication_id, p_temp_id, p_temp_id, l_old_publication_id;
18103
18104 COMMIT;
18105 EXCEPTION
18106 WHEN OTHERS
18107 THEN
18108 NULL;
18109 END;
18110
18111 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18112 ----will global template have a button_bar_template
18113 ----may be not
18114
18115 PROCEDURE export_global_template(p_template_id IN NUMBER, p_publication_id IN NUMBER)
18116 IS
18117 rec_count NUMBER := 0;
18118 l_new_document VARCHAR2(255);
18119 l_document_id NUMBER;
18120 l_str VARCHAR2(2000);
18121 BEGIN
18122 -----bulk collect from templates
18123 cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
18124 cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
18125 cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
18126 cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
18127 cz_pb_mgr.g_ui_templates_title_ref.DELETE;
18128 cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
18129 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
18130 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
18131 cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
18132
18133 IF (cz_pb_mgr.v_server_id = 0)
18134 THEN
18135 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates_seq
18136 , 'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link
18137 ,cz_pb_mgr.v_oraclesequenceincr
18138 )
18139 ,template_id, main_message_id, title_id
18140 ,jrad_doc, -1, 0
18141 ,0
18142 BULK COLLECT INTO cz_pb_mgr.g_ui_templates_new_temp_id_ref
18143 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref, cz_pb_mgr.g_ui_templates_msg_id_ref, cz_pb_mgr.g_ui_templates_title_ref
18144 ,cz_pb_mgr.g_ui_templates_jrad_new_ref, cz_pb_mgr.v_intl_text_model_tbl, cz_pb_mgr.v_intl_text_ui_tbl
18145 ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
18146 FROM cz_ui_templates
18147 WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.ui_def_id = 0 AND cz_ui_templates.deleted_flag = record_not_deleted;
18148 ELSE
18149 SELECT template_id, template_id, main_message_id
18150 ,title_id, jrad_doc, -1
18151 ,0, 0
18152 BULK COLLECT INTO cz_pb_mgr.g_ui_templates_new_temp_id_ref, cz_pb_mgr.g_ui_templates_old_temp_id_ref, cz_pb_mgr.g_ui_templates_msg_id_ref
18153 ,cz_pb_mgr.g_ui_templates_title_ref, cz_pb_mgr.g_ui_templates_jrad_new_ref, cz_pb_mgr.v_intl_text_model_tbl
18154 ,cz_pb_mgr.v_intl_text_ui_tbl, cz_pb_mgr.g_ui_templates_ui_def_old_ref
18155 FROM cz_ui_templates
18156 WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.ui_def_id = 0 AND cz_ui_templates.deleted_flag = record_not_deleted;
18157 END IF;
18158
18159 ------main msg
18160 insert_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, 'main message ids of cz ui templates', TRUE);
18161 resolve_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'main message ids of cz ui templates');
18162 ----title id
18163 insert_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, 'main message ids of cz ui templates', TRUE);
18164 resolve_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, cz_pb_mgr.v_cz_intl_text_idx_ref, 'main message ids of cz ui templates');
18165
18166 IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0)
18167 THEN
18168 FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
18169 LOOP
18170 IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
18171 THEN
18172 insert_into_repository(cz_pb_mgr.g_ui_templates_jrad_new_ref(doc), cz_pb_mgr.g_ui_templates_jrad_new_ref(doc), cz_pb_mgr.v_db_link);
18173 END IF;
18174 END LOOP;
18175 END IF;
18176
18177 insert_ui_templates;
18178
18179 COMMIT;
18180 EXCEPTION
18181 WHEN OTHERS
18182 THEN
18183 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18184 cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || p_template_id || ' : ' || SQLERRM;
18185 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
18186 RAISE;
18187 END export_global_template;
18188
18189 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18190 PROCEDURE export_global_template
18191 IS
18192 rec_count NUMBER := 0;
18193 l_new_document VARCHAR2(255);
18194 l_document_id NUMBER;
18195 l_str VARCHAR2(2000);
18196 l_global_temp_tbl cz_pb_mgr.t_ref;
18197 BEGIN
18198 -----bulk collect from templates
18199 cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
18200 cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
18201 cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
18202 cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
18203 cz_pb_mgr.g_ui_templates_title_ref.DELETE;
18204 cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
18205 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
18206 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
18207 cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
18208
18209 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
18210 THEN
18211 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18212 LOOP
18213 l_global_temp_tbl.DELETE;
18214
18215 SELECT template_id
18216 BULK COLLECT INTO l_global_temp_tbl
18217 FROM cz_ui_collect_tmpls_v
18218 WHERE cz_ui_collect_tmpls_v.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_ui_collect_tmpls_v.ui_def_id = 0;
18219
18220 IF (l_global_temp_tbl.COUNT > 0)
18221 THEN
18222 rec_count := cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT;
18223
18224 FOR j IN l_global_temp_tbl.FIRST .. l_global_temp_tbl.LAST
18225 LOOP
18226 rec_count := rec_count + 1;
18227 cz_pb_mgr.g_ui_templates_old_temp_id_ref(rec_count) := l_global_temp_tbl(j);
18228 END LOOP;
18229 END IF;
18230 END LOOP;
18231 END IF;
18232
18233 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
18234 THEN
18235 FOR i IN cz_pb_mgr.g_ui_templates_old_temp_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_old_temp_id_ref.LAST
18236 LOOP
18237 export_global_template(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i), cz_pb_mgr.v_publication_id);
18238 insert_tmp_pub(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i));
18239 END LOOP;
18240 END IF;
18241
18242 COMMIT;
18243 EXCEPTION
18244 WHEN OTHERS
18245 THEN
18246 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18247 cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || SQLERRM;
18248 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
18249 RAISE;
18250 END export_global_template;
18251
18252 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18253 -------- procedure to export the configuration models
18254 ---------from the development to the production server
18255 PROCEDURE proc_export(
18256 publicationid IN NUMBER
18257 ,modelid IN NUMBER
18258 ,serverid IN NUMBER
18259 ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
18260 ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
18261 )
18262 IS
18263 CURSOR model_cur(rootmodelid NUMBER, serverid NUMBER, pubid NUMBER)
18264 IS
18265 SELECT model_id
18266 FROM cz_pb_model_exports
18267 WHERE root_model_id = rootmodelid AND server_id = serverid AND publication_id = pubid AND superseded_flag = 'N'
18268 ORDER BY export_reverse_seq DESC;
18269
18270 v_cursor NUMBER;
18271 v_model_id_table_exported model_id_table;
18272 v_model_id_table_not_exported model_id_table;
18273 v_model_count NUMBER := 1;
18274 v_validate_count NUMBER;
18275 mm_models_to_be_migrated cz_pb_mgr.t_ref;
18276
18277 l_expl_check_flag cz_db_settings.value%TYPE;
18278 l_run_id NUMBER := cz_pb_mgr.v_pb_run_id;
18279 l_msg_count NUMBER;
18280 l_msg_data VARCHAR2(32000);
18281 l_return_status VARCHAR2(16);
18282
18283 BEGIN
18284 v_next_sequence_gen.DELETE;
18285 v_sequence_count.DELETE;
18286
18287 ------retrieve seq incrementor from cz_db_settings
18288 IF (cz_pb_mgr.g_log_timing = publication_timing)
18289 THEN
18290 log_timing_message('start get_seq_incrementor');
18291 END IF;
18292
18293 get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
18294
18295 IF (cz_pb_mgr.g_log_timing = publication_timing)
18296 THEN
18297 log_timing_message('end get_seq_incrementor');
18298 END IF;
18299
18300 IF (cz_pb_mgr.g_log_timing = publication_timing)
18301 THEN
18302 log_timing_message('start get_models_tobe_exported');
18303 END IF;
18304
18305 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
18306 THEN
18307 mm_models_to_be_migrated := get_rootmodel_and_mig_tgt_fldr(publicationid);
18308 mm_get_models_tobe_exported(mm_models_to_be_migrated);
18309 ELSIF(g_object_type = MODEL_PUBLICATION)
18310 THEN
18311 get_models_tobe_exported(modelid);
18312 ELSIF(g_object_type = template_publication)
18313 THEN
18314 cz_pb_mgr.v_models_to_be_exported.DELETE;
18315 cz_pb_mgr.v_models_to_be_exported(1) := modelid;
18316 END IF;
18317
18318 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
18319 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18320 LOOP
18321 mm_v_rootmodels_tobe_exported(i) := modelid;
18322 END LOOP;
18323 END IF;
18324
18325 IF (cz_pb_mgr.g_log_timing = publication_timing)
18326 THEN
18327 log_timing_message('end get_models_tobe_exported');
18328 log_timing_message('start create_export_request');
18329 END IF;
18330
18331 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
18332 THEN
18333 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18334 LOOP
18335 create_export_request(cz_pb_mgr.mm_v_rootmodels_tobe_exported(i), cz_pb_mgr.v_models_to_be_exported(i), publicationid, serverid);
18336 END LOOP;
18337 ELSE
18338 cz_pb_mgr.v_err_message := 'No model / template data exported ';
18339 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:EXPREQ', SQLCODE);
18340 END IF;
18341
18342 -----create_copy_requests;
18343 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
18344 THEN
18345 cz_pb_mgr.v_models_to_be_exported.DELETE;
18346
18347 IF (cz_pb_mgr.g_log_timing = publication_timing)
18348 THEN
18349 log_timing_message('end create_export_request');
18350 log_timing_message('start model_cur ');
18351 END IF;
18352
18353 OPEN model_cur(modelid, serverid, publicationid);
18354
18355 LOOP
18356 FETCH model_cur
18357 INTO v_cursor;
18358
18359 EXIT WHEN model_cur%NOTFOUND;
18360 cz_pb_mgr.v_models_to_be_exported(v_model_count) := v_cursor;
18361 v_model_count := v_model_count + 1;
18362 END LOOP;
18363
18364 CLOSE model_cur;
18365
18366 IF (cz_pb_mgr.g_log_timing = publication_timing)
18367 THEN
18368 log_timing_message('end model_cur ');
18369 log_timing_message('start validate_schema');
18370 END IF;
18371
18372 v_validate_count := validate_schema(serverid);
18373
18374 IF (cz_pb_mgr.g_log_timing = publication_timing)
18375 THEN
18376 log_timing_message('end validate_schema');
18377 END IF;
18378
18379 IF ((v_validate_count = 1) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
18380 THEN
18381 IF (cz_pb_mgr.g_log_timing = publication_timing)
18382 THEN
18383 log_timing_message('start load_data');
18384 END IF;
18385
18386 load_data(publicationid, modelid, serverid, x_status_code, p_copy_nonjradui);
18387
18388 IF (cz_pb_mgr.g_log_timing = publication_timing)
18389 THEN
18390 log_timing_message('end load_data');
18391 END IF;
18392 ELSE
18393 IF (v_validate_count <> 1)
18394 THEN
18395 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_COMPAT_ERR');
18396 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:VALSCH', SQLCODE);
18397 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18398 ELSE
18399 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18400 cz_pb_mgr.v_err_message := 'Process terminated for publication_id: ' || TO_CHAR(cz_pb_mgr.v_publication_id);
18401 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:PROCEXP', SQLCODE);
18402 END IF;
18403 END IF;
18404 ELSIF(g_object_type = template_publication)
18405 THEN
18406 export_global_template(modelid, publicationid);
18407 END IF;
18408
18409 -----upload publication data
18410 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
18411 THEN
18412 upload_publication_data(cz_pb_mgr.v_publication_id);
18413 END IF;
18414
18415 --Verify if the exported product structure and explosion data are in synch.
18416
18417 IF(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)THEN
18418
18419 BEGIN
18420 SELECT DECODE(UPPER(value), 'Y', 'Y', 'YES', 'Y', '1', 'Y', 'ON', 'Y', 'N')
18421 INTO l_expl_check_flag FROM cz_db_settings
18422 WHERE UPPER(section_name) = 'PUBLICATION'
18423 AND UPPER(setting_id) = 'CheckExplosionStructure';
18424 EXCEPTION
18425 WHEN OTHERS THEN
18426 l_expl_check_flag := 'N';
18427 END;
18428
18429 IF(l_expl_check_flag = 'Y')THEN
18430
18431 EXECUTE IMMEDIATE 'BEGIN cz_diagnostics_pvt.verify_structure' || cz_pb_mgr.v_db_link || '(1.0, :1, ''0'', :2, :3, :4, :5); END;'
18432 USING cz_pb_mgr.target_root_model_id, IN OUT l_run_id, IN OUT l_return_status, IN OUT l_msg_count, IN OUT l_msg_data;
18433 END IF;
18434
18435 IF(l_return_status = FND_API.G_RET_STS_ERROR)THEN
18436
18437 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18438 cz_pb_mgr.v_err_message := l_msg_data;
18439 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_diagnostics_pvt', -1);
18440 END IF;
18441 END IF;
18442
18443 -----set status for concurrent manager
18444 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
18445 THEN
18446 cz_pb_mgr.global_export_retcode := 2;
18447 rollback_data(cz_pb_mgr.v_db_link);
18448 END IF;
18449
18450 -----clear tables
18451 clear_all_tables(cz_pb_mgr.v_status_code);
18452 EXCEPTION
18453 WHEN OTHERS
18454 THEN
18455 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
18456 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORT_FAILURE', SQLCODE);
18457 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18458 RAISE;
18459 END proc_export;
18460
18461 --------------------------------------------------------------------------------
18462 -- private: ret status: 0 yes, 2 no (msg_data - ui or err info, model_name - model info)
18463 PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER
18464 ,p_report_model_info IN NUMBER
18465 ,x_return_status OUT NOCOPY NUMBER
18466 ,x_msg_data OUT NOCOPY VARCHAR2
18467 ,x_model_name OUT NOCOPY VARCHAR2
18468 ,p_check_root_ui_only IN BOOLEAN DEFAULT FALSE
18469 )
18470 IS
18471 l_ui_style cz_ui_defs.ui_style%TYPE;
18472 l_ui_status cz_ui_defs.ui_status%TYPE;
18473 l_ui_tbl t_ref;
18474 l_ui_name cz_ui_defs.NAME%TYPE;
18475 l_root_model_id NUMBER;
18476 l_root_ui_last_update_date DATE;
18477 l_model_id NUMBER;
18478 l_model_name cz_devl_projects.NAME%TYPE;
18479 l_last_update_date DATE;
18480 l_last_struct_update DATE;
18481 l_suppress_refresh_flag cz_ui_defs.suppress_refresh_flag%TYPE;
18482 BEGIN
18483 x_return_status := 0;
18484 x_msg_data := '';
18485
18486 SELECT ui_style, ui_status, NAME, NVL(suppress_refresh_flag, '0'), devl_project_id, NVL(ui_timestamp_refresh, last_update_date)
18487 INTO l_ui_style, l_ui_status, l_ui_name, l_suppress_refresh_flag, l_root_model_id, l_root_ui_last_update_date
18488 FROM cz_ui_defs
18489 WHERE ui_def_id = p_ui_def_id;
18490
18491 IF l_ui_status = 'NEED_REFRESH' THEN
18492 x_return_status := 2;
18493 x_msg_data := l_ui_name;
18494
18495 IF p_report_model_info = 1 THEN
18496 SELECT NAME INTO x_model_name
18497 FROM cz_devl_projects
18498 WHERE devl_project_id = l_root_model_id;
18499 END IF;
18500
18501 RETURN;
18502 END IF;
18503
18504 IF p_check_root_ui_only THEN
18505 IF l_suppress_refresh_flag='0' THEN
18506 l_ui_tbl(1) := p_ui_def_id;
18507 END IF;
18508 ELSE
18509 IF (l_ui_style IN(g_ui_style_dhtml, g_ui_style_applet)) THEN
18510 SELECT DISTINCT ui_def_id BULK COLLECT INTO l_ui_tbl
18511 FROM cz_ui_nodes
18512 WHERE deleted_flag = '0'
18513 START WITH ui_def_id = p_ui_def_id
18514 CONNECT BY PRIOR ui_def_ref_id = ui_def_id AND PRIOR deleted_flag = '0';
18515 ELSIF (l_ui_style = g_ui_style_jrad) THEN
18516 SELECT ref_ui_def_id BULK COLLECT INTO l_ui_tbl
18517 FROM (SELECT DISTINCT ref_ui_def_id
18518 FROM cz_ui_refs
18519 START WITH ui_def_id = p_ui_def_id AND deleted_flag = '0'
18520 CONNECT BY PRIOR ref_ui_def_id = ui_def_id AND deleted_flag = '0' AND PRIOR deleted_flag = '0') uis
18521 WHERE EXISTS (SELECT NULL
18522 FROM cz_ui_defs
18523 WHERE ui_def_id = uis.ref_ui_def_id AND deleted_flag = '0' AND NVL(suppress_refresh_flag, '0') = '0');
18524
18525 IF l_suppress_refresh_flag = '0' THEN
18526 l_ui_tbl(l_ui_tbl.COUNT + 1) := p_ui_def_id;
18527 END IF;
18528 ELSIF l_ui_style = g_ui_style_custom THEN
18529 RETURN;
18530 ELSE
18531 x_return_status := 2;
18532 x_msg_data := cz_utils.get_text('CZ_UI_STYLE_ERR');
18533 RETURN;
18534 END IF;
18535 END IF;
18536
18537 IF (l_ui_tbl.COUNT > 0) THEN
18538 FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST
18539 LOOP
18540 IF l_ui_tbl(i) = p_ui_def_id THEN
18541 l_model_id := l_root_model_id;
18542 l_last_update_date := l_root_ui_last_update_date;
18543 ELSE
18544 BEGIN
18545 SELECT NVL(ui_timestamp_refresh, last_update_date), devl_project_id, NAME, ui_status
18546 INTO l_last_update_date, l_model_id, l_ui_name, l_ui_status
18547 FROM cz_ui_defs
18548 WHERE cz_ui_defs.ui_def_id = l_ui_tbl(i);
18549 EXCEPTION
18550 WHEN OTHERS THEN
18551 l_last_update_date := NULL;
18552 END;
18553
18554 IF l_last_update_date IS NULL OR l_ui_status = 'NEED_REFRESH' THEN
18555 x_return_status := 2;
18556 x_msg_data := l_ui_name;
18557
18558 IF p_report_model_info = 1 THEN
18559 SELECT NAME INTO x_model_name
18560 FROM cz_devl_projects
18561 WHERE devl_project_id = l_model_id;
18562 END IF;
18563
18564 EXIT;
18565 END IF;
18566 END IF;
18567
18568 BEGIN
18569 SELECT DECODE(l_ui_style, g_ui_style_jrad, NVL(ui_timestamp_struct_update, last_struct_update), last_struct_update), NAME
18570 INTO l_last_struct_update, l_model_name
18571 FROM cz_devl_projects
18572 WHERE cz_devl_projects.devl_project_id = l_model_id;
18573 EXCEPTION
18574 WHEN OTHERS THEN
18575 l_last_struct_update := NULL;
18576 l_model_name := NULL;
18577 END;
18578
18579 IF l_last_struct_update IS NULL OR l_last_update_date < l_last_struct_update THEN
18580 x_return_status := 2;
18581 x_msg_data := l_ui_name;
18582 x_model_name := l_model_name;
18583 EXIT;
18584 END IF;
18585 END LOOP;
18586 END IF;
18587 EXCEPTION
18588 WHEN OTHERS THEN
18589 x_return_status := 2;
18590 x_msg_data := SQLERRM;
18591 END is_ui_upto_date;
18592
18593 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18594 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18595 -----------deep model copy
18596 -----------p_model_id : devl_project_id of the model for which a copy is to be made.
18597 -----------p_server_id: server_id from cz_servers that contains db info
18598 -----------p_folder: folder to which the copy is made
18599 -----------p_copy_rules: flag 1 implies copy rules else 0
18600 -----------p_copy_uis: flag 1 implies copy uis
18601 -----------p_copy_root: flag 1 implies that only root model would be copied
18602 -----------x_model_id : devl_project_id of the copied model
18603 PROCEDURE deep_model_copy(
18604 p_model_id IN NUMBER
18605 ,p_server_id IN NUMBER
18606 ,p_folder IN NUMBER
18607 ,p_copy_rules IN NUMBER
18608 ,p_copy_uis IN NUMBER
18609 ,p_copy_root IN NUMBER
18610 ,x_model_id OUT NOCOPY NUMBER
18611 ,x_run_id OUT NOCOPY NUMBER
18612 ,x_status OUT NOCOPY VARCHAR2
18613 )
18614 AS
18615 v_count PLS_INTEGER := 0;
18616 v_model_chk_count PLS_INTEGER := 0;
18617 v_ui_chk_count PLS_INTEGER := 0;
18618 v_folder_chk PLS_INTEGER := 0;
18619 v_rp_entries_name cz_rp_entries.NAME%TYPE;
18620 v_rp_entries_desc cz_rp_entries.description%TYPE;
18621 v_object_id cz_rp_entries.object_id%TYPE;
18622 v_copy_number NUMBER := 0.0;
18623 v_rp_orig_sys_ref VARCHAR2(255);
18624 v_imp_ps_node_count PLS_INTEGER := 0;
18625 v_pub_id cz_model_publications.publication_id%TYPE;
18626 l_msg_index NUMBER;
18627 failed_to_lock_model EXCEPTION;
18628 l_msg_data VARCHAR2(2000);
18629 l_msg_count NUMBER := 0;
18630 l_return_status VARCHAR2(1);
18631 l_lock_status VARCHAR2(1);
18632 l_locked_models cz_security_pvt.number_type_tbl;
18633 l_checkout_user cz_security_pvt.varchar_type_tbl;
18634 l_model_upto_date_status NUMBER;
18635 l_ui_upto_date_status NUMBER;
18636 l_model_upto_date_msg VARCHAR2(2000);
18637 logic_gen_required CONSTANT NUMBER := 1;
18638 ui_refresh_required CONSTANT NUMBER := 2;
18639 l_ui_tbl t_ref;
18640 l_ui_name VARCHAR2(1000);
18641 l_model_name VARCHAR2(1000);
18642 l_copy_nonjradui BOOLEAN;
18643 ui_not_uptodate EXCEPTION;
18644
18645 TYPE ui_style_tbl_type IS TABLE OF cz_ui_defs.ui_style%TYPE INDEX BY PLS_INTEGER;
18646 l_ui_style_tbl ui_style_tbl_type;
18647 BEGIN
18648 ----------delete session specific parameters
18649 BEGIN
18650 delete_session_parameters;
18651 EXCEPTION
18652 WHEN OTHERS
18653 THEN
18654 cz_pb_mgr.v_err_message := 'ERROR :deletion of session parameters ' || SQLERRM;
18655 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18656 END;
18657
18658 cz_pb_mgr.v_status_code := publication_ok;
18659
18660 ---------select run_id and user from dual
18661 ---------
18662 BEGIN
18663 SELECT USER, cz_xfr_run_infos_s.NEXTVAL
18664 INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
18665 FROM DUAL;
18666 EXCEPTION
18667 WHEN OTHERS
18668 THEN
18669 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
18670 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
18671 END;
18672
18673 cz_security_pvt.lock_model(1.0, p_model_id, fnd_api.g_true, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18674
18675 IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
18676 THEN
18677 l_msg_index := 1;
18678
18679 WHILE l_msg_count > 0
18680 LOOP
18681 l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
18682 cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
18683 l_msg_index := l_msg_index + 1;
18684 l_msg_count := l_msg_count - 1;
18685 END LOOP;
18686
18687 RAISE failed_to_lock_model;
18688 END IF;
18689
18690 --------initialize session parameters
18691 cz_pb_mgr.sequence_const := 0;
18692 cz_pb_mgr.v_status_code := 'OK';
18693 cz_pb_mgr.global_export_retcode := 0;
18694 cz_pb_mgr.g_object_type := 'PRJ';
18695
18696 IF (p_copy_rules = 1)
18697 THEN
18698 cz_pb_mgr.copy_rules := 'YES';
18699 ELSE
18700 cz_pb_mgr.copy_rules := 'NO';
18701 END IF;
18702
18703 IF (p_copy_uis = 1)
18704 THEN
18705 cz_pb_mgr.copy_uis := 'YES';
18706 ELSE
18707 cz_pb_mgr.copy_uis := 'NO';
18708 END IF;
18709
18710 IF (p_copy_root = 0)
18711 THEN
18712 cz_pb_mgr.copy_root_only := 'NO';
18713 ELSE
18714 cz_pb_mgr.copy_root_only := 'YES';
18715 END IF;
18716
18717 --------initialize model, ui and server values
18718 cz_pb_mgr.v_root_model_id := p_model_id;
18719
18720 --------get the ui_def_id for the above model
18721 IF (cz_pb_mgr.copy_uis = 'YES')
18722 THEN
18723 BEGIN
18724 SELECT MAX(ui_def_id)
18725 INTO cz_pb_mgr.v_root_ui_def_id
18726 FROM cz_ui_defs
18727 WHERE cz_ui_defs.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_ui_defs.deleted_flag = '0';
18728 EXCEPTION
18729 WHEN NO_DATA_FOUND
18730 THEN
18731 cz_pb_mgr.v_root_ui_def_id := -999;
18732 WHEN OTHERS
18733 THEN
18734 cz_pb_mgr.v_root_ui_def_id := -999;
18735 END;
18736 ELSE
18737 cz_pb_mgr.v_root_ui_def_id := -999;
18738 END IF;
18739
18740 cz_pb_mgr.v_server_id := p_server_id;
18741 -------set session level parameter that differentiates from publishing
18742 cz_pb_mgr.v_session_parameter := model_copy;
18743 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
18744 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
18745 ---------check if model exists
18746 v_model_chk_count := 0;
18747
18748 BEGIN
18749 SELECT 1, NVL(config_engine_type, 'L')
18750 INTO v_model_chk_count, g_engine_type
18751 FROM cz_devl_projects
18752 WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_devl_projects.deleted_flag = '0';
18753 EXCEPTION
18754 WHEN OTHERS
18755 THEN
18756 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
18757 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18758 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18759 END;
18760
18761 ---------verify that ui exists
18762 v_ui_chk_count := -1;
18763
18764 IF (cz_pb_mgr.v_root_ui_def_id > 0)
18765 THEN
18766 BEGIN
18767 SELECT 1
18768 INTO v_ui_chk_count
18769 FROM cz_ui_defs
18770 WHERE cz_ui_defs.ui_def_id = cz_pb_mgr.v_root_ui_def_id AND cz_ui_defs.deleted_flag = '0';
18771 EXCEPTION
18772 WHEN OTHERS
18773 THEN
18774 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
18775 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18776 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18777 END;
18778 END IF;
18779
18780 -------check if UI is upto date
18781 IF cz_pb_mgr.copy_uis = 'YES' THEN
18782 l_copy_nonjradui := TRUE;
18783 IF cz_pb_mgr.copy_root_only = 'YES' THEN
18784 SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
18785 FROM cz_ui_defs
18786 WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id=p_model_id;
18787 ELSE
18788 SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
18789 FROM cz_ui_defs
18790 WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
18791 (SELECT component_id FROM cz_model_ref_expls
18792 WHERE deleted_flag='0' AND model_id=p_model_id);
18793 END IF;
18794
18795 IF l_ui_tbl.COUNT>0 THEN
18796 FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST LOOP
18797 -- all jrad uis have to be up to date
18798 -- all nonjrad uis will be not copied if any such ui is not up to date
18799 IF l_ui_style_tbl(i) = oa_ui_style OR l_copy_nonjradui THEN
18800 is_ui_upto_date(p_ui_def_id => l_ui_tbl(i)
18801 ,p_report_model_info => 1
18802 ,x_return_status => l_ui_upto_date_status
18803 ,x_msg_data => l_ui_name
18804 ,x_model_name => l_model_name
18805 ,p_check_root_ui_only=> TRUE
18806 );
18807 IF l_ui_upto_date_status IS NOT NULL AND l_ui_upto_date_status <> 0 THEN
18808 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'UI' ||
18809 ' ''' || l_ui_name || '''', 'MODELID', '''' || l_model_name || '''');
18810 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', -20001);
18811 IF l_ui_style_tbl(i) = oa_ui_style THEN
18812 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18813 RAISE ui_not_uptodate;
18814 ELSE
18815 l_copy_nonjradui := FALSE;
18816 END IF;
18817 END IF;
18818 END IF;
18819 END LOOP;
18820 END IF;
18821 END IF;
18822
18823 -- if no ui to copy or not to copy ui
18824 IF l_ui_upto_date_status IS NULL THEN
18825 l_ui_upto_date_status := 0;
18826 END IF;
18827
18828 --------check if folder exists
18829 IF (p_folder IS NOT NULL)
18830 THEN
18831 BEGIN
18832 SELECT 1
18833 INTO v_folder_chk
18834 FROM cz_rp_entries
18835 WHERE object_type = 'FLD' AND object_id = p_folder AND deleted_flag = '0';
18836 EXCEPTION
18837 WHEN OTHERS
18838 THEN
18839 cz_pb_mgr.v_err_message := 'Error in retrieving folder id : ' || p_folder || ' : ' || SQLERRM;
18840 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18841 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18842 END;
18843 END IF;
18844
18845 IF (v_model_chk_count = 0)
18846 THEN
18847 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
18848 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18849 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18850 ELSIF(v_ui_chk_count = 0)
18851 THEN
18852 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
18853 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18854 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18855 ELSE
18856 -----------create a dummy publication
18857 BEGIN
18858 SELECT cz_model_publications_s.NEXTVAL
18859 INTO cz_pb_mgr.v_publication_id
18860 FROM DUAL;
18861
18862 v_pub_id := cz_pb_mgr.v_publication_id;
18863 EXCEPTION
18864 WHEN OTHERS
18865 THEN
18866 cz_pb_mgr.v_err_message := 'Error in generation of dummy publication id';
18867 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18868 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18869 END;
18870
18871 BEGIN
18872 INSERT INTO cz_model_publications
18873 (publication_id, model_id, server_id, product_key, publication_mode
18874 ,ui_def_id, ui_style, applicable_from, applicable_until, deleted_flag, model_last_struct_update, model_last_logic_update
18875 ,model_last_updated, source_target_flag, object_id, object_type, disabled_flag
18876 )
18877 VALUES (cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, 'copy model', 'T'
18878 ,cz_pb_mgr.v_root_ui_def_id, '0', SYSDATE, SYSDATE, '0', SYSDATE, SYSDATE
18879 ,SYSDATE, g_target_flag, cz_pb_mgr.v_root_model_id, 'PRJ', '0'
18880 );
18881
18882 COMMIT;
18883 EXCEPTION
18884 WHEN OTHERS
18885 THEN
18886 cz_pb_mgr.v_err_message := 'Error in creation of dummy publication record: ' || SQLERRM;
18887 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18888 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18889 END;
18890
18891 BEGIN
18892 proc_export(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, cz_pb_mgr.v_status_code,
18893 (cz_pb_mgr.copy_uis='YES' AND l_copy_nonjradui));
18894
18895 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18896 THEN
18897 cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || ' successfully copied';
18898 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18899 ELSE
18900 cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || ' copy failed';
18901 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18902 END IF;
18903
18904 COMMIT;
18905 EXCEPTION
18906 WHEN OTHERS
18907 THEN
18908 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
18909 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18910 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18911 END;
18912
18913 ----------insert into cz_rp_entries
18914 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
18915 THEN
18916 v_imp_ps_node_count := 0;
18917
18918 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
18919 LOOP
18920 v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
18921 cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
18922 cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
18923
18924 BEGIN
18925 SELECT remote_model_id
18926 INTO v_object_id
18927 FROM cz_pb_model_exports
18928 WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
18929 AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
18930 EXCEPTION
18931 WHEN OTHERS
18932 THEN
18933 cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
18934 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18935 END;
18936
18937 BEGIN
18938 SELECT desc_text, orig_sys_ref
18939 INTO v_rp_entries_desc, v_rp_orig_sys_ref
18940 FROM cz_devl_projects
18941 WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
18942 EXCEPTION
18943 WHEN NO_DATA_FOUND
18944 THEN
18945 v_rp_orig_sys_ref := NULL;
18946 cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
18947 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18948 WHEN OTHERS
18949 THEN
18950 v_rp_orig_sys_ref := NULL;
18951 cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
18952 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18953 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18954 END;
18955
18956 v_rp_entries_name := copy_name(cz_pb_mgr.v_models_to_be_exported(i));
18957
18958 IF (v_rp_entries_name = 'ERROR')
18959 THEN
18960 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18961 END IF;
18962
18963 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18964 THEN
18965 cz_pb_mgr.v_new_object_id := v_object_id;
18966
18967 BEGIN
18968 cz_pb_mgr.v_rp_folder_id := p_folder;
18969 cz_pb_mgr.v_rp_name := v_rp_entries_name;
18970 cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
18971
18972 EXECUTE IMMEDIATE 'BEGIN'
18973 || ' '
18974 || 'insert into cz_rp_entries'
18975 || cz_pb_mgr.v_db_link
18976 || ' ( OBJECT_TYPE'
18977 || ' '
18978 || ',OBJECT_ID'
18979 || ' '
18980 || ',ENCLOSING_FOLDER'
18981 || ' '
18982 || ',NAME'
18983 || ' '
18984 || ',DESCRIPTION'
18985 || ' '
18986 || ',DELETED_FLAG'
18987 || ' '
18988 || ',SEEDED_FLAG'
18989 || ' '
18990 || ')'
18991 || ' '
18992 || 'VALUES ( ''PRJ'''
18993 || ' '
18994 || ',cz_pb_mgr.v_new_object_id'
18995 || ' '
18996 || ',cz_pb_mgr.v_rp_folder_id'
18997 || ' '
18998 || ',cz_pb_mgr.v_rp_name'
18999 || ' '
19000 || ',cz_pb_mgr.v_rp_desc'
19001 || ' '
19002 || ',''0'''
19003 || ' '
19004 || ',''0'');'
19005 || ' '
19006 || 'commit;'
19007 || ' '
19008 || 'END;';
19009 EXCEPTION
19010 WHEN OTHERS
19011 THEN
19012 cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
19013 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19014 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19015 END;
19016
19017 --------update proj name in devl projects with the new name
19018 ----------check if source model is upto date
19019 l_model_upto_date_msg := NULL;
19020 l_model_upto_date_status := 0;
19021 is_model_upto_date(cz_pb_mgr.v_models_to_be_exported(i), l_model_upto_date_status, l_model_upto_date_msg);
19022
19023 BEGIN
19024 IF (cz_pb_mgr.v_rp_name IS NOT NULL)
19025 THEN
19026 IF ((l_model_upto_date_status = 0) AND(l_ui_upto_date_status = 0))
19027 THEN
19028 EXECUTE IMMEDIATE 'BEGIN'
19029 || ' '
19030 || 'UPDATE cz_devl_projects'
19031 || cz_pb_mgr.v_db_link
19032 || ' t'
19033 || ' '
19034 || 'SET t.name = cz_pb_mgr.v_rp_name'
19035 || ' '
19036 || 'WHERE t.devl_project_id = '
19037 || cz_pb_mgr.v_new_object_id
19038 || ';'
19039 || ' '
19040 || 'END;';
19041 ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = ui_refresh_required))
19042 THEN
19043 EXECUTE IMMEDIATE 'BEGIN'
19044 || ' '
19045 || 'UPDATE cz_devl_projects'
19046 || cz_pb_mgr.v_db_link
19047 || ' t'
19048 || ' '
19049 || 'SET t.name = cz_pb_mgr.v_rp_name,'
19050 || ' '
19051 || 't.last_logic_update = sysdate,'
19052 || ' '
19053 || 't.last_struct_update = sysdate'
19054 || ' '
19055 || 'WHERE t.devl_project_id = '
19056 || cz_pb_mgr.v_new_object_id
19057 || ';'
19058 || ' '
19059 || 'END;';
19060 ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = 0))
19061 THEN
19062 EXECUTE IMMEDIATE 'BEGIN'
19063 || ' '
19064 || 'UPDATE cz_devl_projects'
19065 || cz_pb_mgr.v_db_link
19066 || ' t'
19067 || ' '
19068 || 'SET t.name = cz_pb_mgr.v_rp_name,'
19069 || ' '
19070 || 't.last_logic_update = sysdate'
19071 || ' '
19072 || 'WHERE t.devl_project_id = '
19073 || cz_pb_mgr.v_new_object_id
19074 || ';'
19075 || ' '
19076 || 'END;';
19077 ELSE
19078 EXECUTE IMMEDIATE 'BEGIN'
19079 || ' '
19080 || 'UPDATE cz_devl_projects'
19081 || cz_pb_mgr.v_db_link
19082 || ' t'
19083 || ' '
19084 || 'SET t.name = cz_pb_mgr.v_rp_name,'
19085 || ' '
19086 || 't.last_struct_update = sysdate'
19087 || ' '
19088 || 'WHERE t.devl_project_id = '
19089 || cz_pb_mgr.v_new_object_id
19090 || ';'
19091 || ' '
19092 || 'END;';
19093 END IF;
19094 END IF;
19095
19096 COMMIT;
19097 EXCEPTION
19098 WHEN OTHERS
19099 THEN
19100 cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
19101 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19102 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19103 END;
19104
19105 BEGIN
19106
19107 EXECUTE IMMEDIATE ' INSERT INTO CZ_PERSISTENT_REC_IDS'
19108 ||' (devl_project_id,MAX_PERSISTENT_REC_ID,'
19109 ||' deleted_flag) '
19110 ||' SELECT :1,m.max_persistent_rec_id,0 from '
19111 ||' cz_devl_projects p,'
19112 ||' CZ_PERSISTENT_REC_IDS m '
19113 ||' where p.devl_project_id=:2'
19114 ||' and m.devl_project_id=p.devl_project_id '
19115 ||' and p.deleted_flag=0 '
19116 ||' and p.POST_MIGR_CHANGE_FLAG is not null and p.POST_MIGR_CHANGE_FLAG<>''L'''
19117 USING cz_pb_mgr.v_new_object_id, cz_pb_mgr.v_models_to_be_exported(i);
19118
19119 EXCEPTION
19120 WHEN OTHERS
19121 THEN
19122 cz_pb_mgr.v_err_message := 'Error in inserting records into CZ_PERSISTENT_REC_IDS: ' || SQLERRM;
19123 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19124 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19125 END;
19126
19127 ------insert into cz_xfr_project_bills
19128 IF (v_rp_orig_sys_ref IS NOT NULL)
19129 THEN
19130 BEGIN
19131 EXECUTE IMMEDIATE 'BEGIN'
19132 || ' '
19133 || 'insert into cz_xfr_project_bills'
19134 || cz_pb_mgr.v_db_link
19135 || ' ('
19136 || ' '
19137 || 'MODEL_PS_NODE_ID'
19138 || ' '
19139 || ',ORGANIZATION_ID'
19140 || ' '
19141 || ',COMPONENT_ITEM_ID'
19142 || ' '
19143 || ',DESCRIPTION'
19144 || ' '
19145 || ',LAST_IMPORT_RUN_ID'
19146 || ' '
19147 || ',LAST_IMPORT_DATE'
19148 || ' '
19149 || ',SOURCE_BILL_DELETED'
19150 || ' '
19151 || ',TOP_ITEM_ID'
19152 || ' '
19153 || ',DELETED_FLAG'
19154 || ' '
19155 || ',EXPLOSION_TYPE'
19156 || ' '
19157 || ',BILL_REVISION_DATE'
19158 || ' '
19159 || ',EFF_FROM'
19160 || ' '
19161 || ',EFF_TO'
19162 || ' '
19163 || ',SOURCE_SERVER'
19164 || ' '
19165 || ',COPY_ADDL_CHILD_MODELS'
19166 || ' '
19167 || ')'
19168 || ' '
19169 || 'SELECT cz_pb_mgr.v_new_object_id'
19170 || ' '
19171 || ',ORGANIZATION_ID'
19172 || ' '
19173 || ',COMPONENT_ITEM_ID'
19174 || ' '
19175 || ',DESCRIPTION'
19176 || ' '
19177 || ',LAST_IMPORT_RUN_ID'
19178 || ' '
19179 || ',LAST_IMPORT_DATE'
19180 || ' '
19181 || ',SOURCE_BILL_DELETED'
19182 || ' '
19183 || ',TOP_ITEM_ID'
19184 || ' '
19185 || ',DELETED_FLAG'
19186 || ' '
19187 || ',EXPLOSION_TYPE'
19188 || ' '
19189 || ',BILL_REVISION_DATE'
19190 || ' '
19191 || ',EFF_FROM'
19192 || ' '
19193 || ',EFF_TO'
19194 || ' '
19195 || ',SOURCE_SERVER'
19196 || ' '
19197 || ',COPY_ADDL_CHILD_MODELS'
19198 || ' '
19199 || 'FROM cz_xfr_project_bills'
19200 || ' '
19201 || 'WHERE cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
19202 || ' '
19203 || 'AND cz_xfr_project_bills.deleted_flag = ''0'';'
19204 || ' '
19205 || 'commit;'
19206 || ' '
19207 || 'END;';
19208 EXCEPTION
19209 WHEN NO_DATA_FOUND
19210 THEN
19211 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19212 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19213 WHEN OTHERS
19214 THEN
19215 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19216 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19217 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19218 END;
19219 END IF;
19220 END IF;
19221 END LOOP;
19222 END IF;
19223
19224 x_run_id := cz_pb_mgr.v_pb_run_id;
19225 x_status := cz_pb_mgr.v_status_code;
19226 log_pb_trace;
19227 delete_session_parameters;
19228
19229 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
19230 THEN
19231 rollback_data(cz_pb_mgr.v_db_link);
19232 x_model_id := -999;
19233
19234 IF (cz_pb_mgr.v_imported_ps_ref.COUNT > 0)
19235 THEN
19236 EXECUTE IMMEDIATE 'BEGIN'
19237 || ' '
19238 || 'FOR I IN cz_pb_mgr.v_imported_ps_ref.FISRT..cz_pb_mgr.v_imported_ps_ref.LAST'
19239 || ' '
19240 || 'LOOP'
19241 || ' '
19242 || 'DELETE FROM cz_rp_entries'
19243 || cz_pb_mgr.v_db_link
19244 || ' t'
19245 || ' '
19246 || 'WHERE t.object_id = cz_pb_mgr.v_imported_ps_ref(i)'
19247 || ' '
19248 || 'AND t.object_type = ''PRJ'';'
19249 || ' '
19250 || 'END;';
19251 END IF;
19252 ELSE
19253 x_model_id := v_object_id;
19254 END IF;
19255
19256 ----------delete dummy publication record
19257 DELETE FROM cz_model_publications
19258 WHERE publication_id = v_pub_id;
19259
19260 DELETE FROM cz_model_publications
19261 WHERE remote_publication_id = v_pub_id;
19262
19263 DELETE FROM cz_pb_model_exports
19264 WHERE publication_id = v_pub_id;
19265 END IF;
19266
19267 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19268
19269 IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
19270 THEN
19271 l_msg_index := 1;
19272
19273 WHILE l_msg_count > 0
19274 LOOP
19275 cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
19276 l_msg_index := l_msg_index + 1;
19277 l_msg_count := l_msg_count - 1;
19278 END LOOP;
19279 END IF;
19280
19281 COMMIT;
19282 EXCEPTION
19283 WHEN failed_to_lock_model
19284 THEN
19285 x_run_id := cz_pb_mgr.v_pb_run_id;
19286 x_status := PUBLICATION_ERROR;
19287 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19288 log_pb_trace;
19289 WHEN ui_not_uptodate THEN
19290 x_run_id := cz_pb_mgr.v_pb_run_id;
19291 x_status := PUBLICATION_ERROR;
19292 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19293 log_pb_trace;
19294 WHEN OTHERS
19295 THEN
19296 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19297 cz_pb_mgr.v_err_message := 'Fatal error during deep model copy of model: ' || cz_pb_mgr.v_root_model_id;
19298 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
19299 END;
19300
19301 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19302 -----signature of deep model copy that developer would call
19303 ----
19304 PROCEDURE deep_model_copy(
19305 p_model_id IN NUMBER
19306 ,p_server_id IN NUMBER
19307 ,p_folder IN NUMBER
19308 ,p_copy_rules IN NUMBER
19309 ,p_copy_uis IN NUMBER
19310 ,p_copy_root IN NUMBER
19311 ,x_return_status OUT NOCOPY VARCHAR2
19312 ,x_msg_count OUT NOCOPY NUMBER
19313 ,x_msg_data OUT NOCOPY VARCHAR2
19314 ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_TRUE
19315 )
19316 IS
19317 TYPE message_tbl_type IS TABLE OF VARCHAR2(2000)
19318 INDEX BY BINARY_INTEGER;
19319
19320 l_model_id cz_devl_projects.devl_project_id%TYPE;
19321 l_run_id NUMBER;
19322 l_status VARCHAR2(2000);
19323 l_message_tbl message_tbl_type;
19324 l_instr NUMBER := 0;
19325 BEGIN
19326
19327 --initialize the message stack depending on the input parameter
19328 IF (p_init_msg_list = FND_API.G_TRUE) THEN
19329 fnd_msg_pub.initialize;
19330 END IF;
19331
19332 x_return_status := FND_API.G_RET_STS_SUCCESS;
19333 x_msg_count := 0;
19334 x_msg_data := '';
19335 deep_model_copy(p_model_id, p_server_id, p_folder, p_copy_rules, p_copy_uis, p_copy_root, l_model_id, l_run_id, l_status);
19336
19337 IF (l_status = PUBLICATION_ERROR)
19338 THEN
19339 x_return_status := FND_API.G_RET_STS_ERROR;
19340 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19341 END IF;
19342 END deep_model_copy;
19343
19344 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19345 ------------procedure to publish all models
19346 PROCEDURE publish_all_models
19347 AS
19348
19349 l_publication_id_tbl cz_pb_mgr.number_type_tbl;
19350 v_tobepublished cz_model_publications.publication_id%TYPE;
19351 v_run_id cz_db_logs.run_id%TYPE;
19352 v_pb_status cz_model_publications.export_status%TYPE;
19353 BEGIN
19354
19355 SELECT publication_id BULK COLLECT INTO l_publication_id_tbl
19356 FROM cz_model_publications
19357 WHERE cz_model_publications.deleted_flag = record_not_deleted
19358 AND cz_model_publications.export_status = publication_pending
19359 AND UPPER(object_type) = model_publication
19360 ORDER BY publication_id;
19361
19362 IF l_publication_id_tbl.COUNT > 0 THEN
19363 FOR i IN l_publication_id_tbl.FIRST .. l_publication_id_tbl.LAST LOOP
19364 v_tobepublished := l_publication_id_tbl(i);
19365 publish_model( v_tobepublished, v_run_id, v_pb_status);
19366 END LOOP;
19367 END IF;
19368
19369 EXCEPTION
19370 WHEN OTHERS
19371 THEN
19372
19373 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GEN_ERROR', 'TOBEPUBLISHED', v_tobepublished, 'SQLERRM', SQLERRM);
19374 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_ALL_MODELS', SQLCODE);
19375 END publish_all_models;
19376
19377 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19378 -----initialize pb parameters
19379 PROCEDURE initialize_pb_parameters(p_publication_id IN cz_model_publications.publication_id%TYPE)
19380 AS
19381 l_log_pb_time cz_db_settings.VALUE%TYPE;
19382 l_pub_mode cz_model_publications.publication_mode%TYPE;
19383 BEGIN
19384 fnd_msg_pub.initialize;
19385 cz_pb_mgr.v_publication_id := p_publication_id;
19386 cz_pb_mgr.sequence_const := 0;
19387 cz_pb_mgr.v_ui_str := 'x';
19388 cz_pb_mgr.global_export_retcode := 0;
19389 cz_pb_mgr.v_pb_run_id := 0.0;
19390 cz_pb_mgr.bomsynch_flag := 'N';
19391 cz_pb_mgr.v_status_code := publication_ok;
19392 cz_pb_mgr.v_session_parameter := pub_model;
19393 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
19394 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
19395 cz_pb_mgr.v_cz_model_pub_old_id := p_publication_id;
19396 cz_pb_mgr.v_cz_model_pub_new_id := NULL;
19397 cz_pb_mgr.v_ui_name := NULL;
19398 cz_pb_mgr.v_sql_err_msg := 'Fatal error reported';
19399 v_refresh_rules := 'NO';
19400
19401 SELECT publication_mode
19402 INTO l_pub_mode
19403 FROM cz_model_publications
19404 WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted;
19405
19406 IF (UPPER(l_pub_mode) = cz_model_migration_pvt.mode_migration)
19407 THEN
19408 cz_pb_mgr.v_session_parameter := cz_model_migration_pvt.migrate_model;
19409 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
19410 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
19411 END IF;
19412
19413 ---------select run_id and user from dual
19414 BEGIN
19415 SELECT USER, cz_xfr_run_infos_s.NEXTVAL
19416 INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
19417 FROM DUAL;
19418 EXCEPTION
19419 WHEN OTHERS
19420 THEN
19421 RAISE run_id_error;
19422 END;
19423
19424 -------select setting for logging
19425 BEGIN
19426 SELECT VALUE
19427 INTO cz_pb_mgr.v_pb_log_flag
19428 FROM cz_db_settings
19429 WHERE cz_db_settings.setting_id = publication_log;
19430 EXCEPTION
19431 WHEN OTHERS
19432 THEN
19433 cz_pb_mgr.v_pb_log_flag := 'NO';
19434 END;
19435
19436 -------select setting for logging publication times
19437 BEGIN
19438 SELECT VALUE
19439 INTO l_log_pb_time
19440 FROM cz_db_settings
19441 WHERE cz_db_settings.setting_id = pb_timing_log;
19442
19443 IF (l_log_pb_time = 'YES')
19444 THEN
19445 cz_pb_mgr.g_log_timing := publication_timing;
19446 END IF;
19447 EXCEPTION
19448 WHEN OTHERS
19449 THEN
19450 cz_pb_mgr.g_log_timing := 1;
19451 END;
19452 EXCEPTION
19453 WHEN run_id_error
19454 THEN
19455 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
19456 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
19457 WHEN OTHERS
19458 THEN
19459 RAISE;
19460 END initialize_pb_parameters;
19461
19462 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19463 PROCEDURE check_ui_template_exist(p_template_id IN NUMBER, x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE)
19464 IS
19465 l_count NUMBER := 0;
19466 BEGIN
19467 SELECT 1
19468 INTO l_count
19469 FROM cz_ui_templates
19470 WHERE cz_ui_templates.template_id = p_template_id
19471 AND cz_ui_templates.ui_def_id = 0
19472 AND cz_ui_templates.deleted_flag = record_not_deleted
19473 AND ROWNUM < 2;
19474 EXCEPTION
19475 WHEN NO_DATA_FOUND
19476 THEN
19477 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_GLOBAL_TMPL', 'PUBID', cz_pb_mgr.v_publication_id);
19478 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19479 x_status := PUBLICATION_ERROR;
19480 END check_ui_template_exist;
19481
19482 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19483 --------procedure that checks if model and ui specified in the request exist
19484 --------@p_publication_id : publication id of the request
19485 --------@p_model_id : model id of the pb request
19486 --------@p_ui_def_id : ui_def_id of the request
19487 --------@x_status : publication status parameter
19488 PROCEDURE check_model_ui_exist(
19489 p_publication_id IN cz_model_publications.publication_id%TYPE
19490 ,p_model_id IN cz_model_publications.model_id%TYPE
19491 ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
19492 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
19493 )
19494 AS
19495 v_model_chk_count NUMBER := 0.0;
19496 v_ui_chk_count NUMBER := 0.0;
19497 BEGIN
19498 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
19499 THEN
19500 SELECT COUNT(*)
19501 INTO v_model_chk_count
19502 FROM cz_devl_projects
19503 WHERE cz_devl_projects.devl_project_id = p_model_id AND cz_devl_projects.deleted_flag = record_not_deleted;
19504
19505 IF (v_model_chk_count = 0)
19506 THEN
19507 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL', 'PUBID', p_publication_id);
19508 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19509 x_status := PUBLICATION_ERROR;
19510 END IF;
19511
19512 v_ui_chk_count := -1;
19513
19514 IF ((p_ui_def_id IS NOT NULL) AND(p_ui_def_id > 0))
19515 THEN
19516 SELECT COUNT(*)
19517 INTO v_ui_chk_count
19518 FROM cz_ui_defs
19519 WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
19520
19521 IF (v_ui_chk_count = 0)
19522 THEN
19523 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI', 'PUBID', p_publication_id);
19524 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19525 x_status := PUBLICATION_ERROR;
19526 END IF;
19527 END IF;
19528
19529 IF ((v_model_chk_count = 0) OR(v_ui_chk_count = 0))
19530 THEN
19531 update_publication_status(p_publication_id, PUBLICATION_ERROR, empty_string);
19532 END IF;
19533 END IF;
19534 EXCEPTION
19535 WHEN OTHERS
19536 THEN
19537 x_status := PUBLICATION_ERROR;
19538 RAISE;
19539 END check_model_ui_exist;
19540
19541 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19542 -------procedure that gets the target ui def id in case no new copy is made
19543 PROCEDURE get_tgt_ui_def(
19544 p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
19545 ,p_prev_rem_publication_id IN cz_model_publications.publication_id%TYPE
19546 ,x_rem_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
19547 ,x_rem_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
19548 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
19549 )
19550 AS
19551 v_ui_name cz_ui_defs.NAME%TYPE;
19552 v_old_remote_model cz_model_publications.model_id%TYPE;
19553 ui_cv ref_cursor;
19554 BEGIN
19555 BEGIN
19556 SELECT NAME
19557 INTO v_ui_name
19558 FROM cz_ui_defs
19559 WHERE ui_def_id = p_ui_def_id;
19560 EXCEPTION
19561 WHEN OTHERS
19562 THEN
19563 v_ui_name := NULL;
19564 END;
19565
19566 BEGIN
19567 get_remote_model_id(cz_pb_mgr.v_server_id,cz_pb_mgr.v_root_model_id,x_status,v_old_remote_model);
19568 EXCEPTION
19569 WHEN OTHERS
19570 THEN
19571 RAISE;
19572 END;
19573
19574 x_rem_model_id := v_old_remote_model;
19575
19576 IF (v_ui_name IS NOT NULL)
19577 THEN
19578 OPEN ui_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'
19579 || cz_pb_mgr.v_db_link
19580 || ' '
19581 || 'WHERE name = :1'
19582 || ' '
19583 || 'AND deleted_flag = ''0'' AND devl_project_id = :2' USING v_ui_name, v_old_remote_model;
19584
19585 LOOP
19586 FETCH ui_cv
19587 INTO x_rem_ui_def_id;
19588
19589 EXIT WHEN ui_cv%NOTFOUND;
19590 END LOOP;
19591
19592 CLOSE ui_cv;
19593 END IF;
19594 EXCEPTION
19595 WHEN OTHERS
19596 THEN
19597 CLOSE ui_cv;
19598
19599 cz_pb_mgr.v_err_message := 'Error in retrieving remote ui def id for source ui_def_id: ' || TO_CHAR(p_ui_def_id) || ' : ' || SQLERRM;
19600 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETTGTUIDEF', SQLCODE);
19601 x_status := PUBLICATION_ERROR;
19602 RAISE;
19603 END get_tgt_ui_def;
19604
19605 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19606 -----procedure that checks the export status of the existing request
19607 -----Only requests with a status of PEN can be published
19608 PROCEDURE check_export_status(
19609 p_export_status IN cz_model_publications.export_status%TYPE
19610 ,p_pb_flag IN VARCHAR2
19611 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
19612 )
19613 AS
19614 BEGIN
19615 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
19616 THEN
19617 IF (p_pb_flag = cz_publish)
19618 THEN
19619 IF ((p_export_status = 'PUP') OR(p_export_status = 'ERR') OR(p_export_status = 'PRC') OR(p_export_status = 'OK'))
19620 THEN
19621 cz_pb_mgr.v_err_message :=
19622 cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
19623 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19624 cz_pb_mgr.v_err_message := 'Publication with a status PRC/PUP/ERR may not be published';
19625 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19626 x_status := PUBLICATION_ERROR;
19627 END IF;
19628 ELSIF(p_pb_flag = cz_republish)
19629 THEN
19630 IF (p_export_status <> 'OK')
19631 THEN
19632 x_status := PUBLICATION_ERROR;
19633 cz_pb_mgr.v_err_message :=
19634 cz_utils.get_text('CZ_REPUB_STATUS_CHK', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
19635 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISHMODEL', SQLCODE);
19636 END IF;
19637 END IF;
19638 END IF;
19639 EXCEPTION
19640 WHEN OTHERS
19641 THEN
19642 cz_pb_mgr.v_err_message := 'Error in check pb status: ' || SQLERRM;
19643 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
19644 x_status := PUBLICATION_ERROR;
19645 END check_export_status;
19646
19647 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19648 PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER, x_return_status OUT NOCOPY NUMBER, x_msg_data OUT NOCOPY VARCHAR2)
19649 IS
19650 l_model_name cz_devl_projects.NAME%TYPE;
19651 BEGIN
19652 IF p_ui_def_id IS NOT NULL
19653 THEN
19654 is_ui_upto_date(p_ui_def_id, 0, x_return_status, x_msg_data, l_model_name);
19655 END IF;
19656 END is_ui_upto_date;
19657
19658 FUNCTION is_ui_upto_date(p_ui_def_id IN NUMBER)
19659 RETURN VARCHAR2
19660 IS
19661 l_return_status VARCHAR2(255);
19662 l_msg_data VARCHAR2(32000);
19663 BEGIN
19664 is_ui_upto_date(p_ui_def_id, l_return_status, l_msg_data);
19665
19666 IF l_return_status = 2
19667 THEN
19668 RETURN '1';
19669 ELSE
19670 RETURN '0';
19671 END IF;
19672 END is_ui_upto_date;
19673
19674 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19675 -- return status: 0 yes, 1 no
19676 -- directly called by developer
19677 PROCEDURE is_model_upto_date(p_model_id IN NUMBER, x_return_status IN OUT NOCOPY NUMBER, x_msg_data IN OUT NOCOPY VARCHAR2)
19678 IS
19679 l_component_id cz_model_ref_expls.component_id%TYPE;
19680 l_model_name cz_devl_projects.NAME%TYPE;
19681 l_root_model_name cz_devl_projects.NAME%TYPE;
19682 l_prj_last_logic_update cz_devl_projects.last_logic_update%TYPE;
19683 l_prj_last_struct_update cz_devl_projects.last_struct_update%TYPE;
19684 l_logic_last_update_date cz_lce_headers.last_update_date%TYPE;
19685 l_root_logic_last_update_date cz_lce_headers.last_update_date%TYPE;
19686 l_engine_type cz_devl_projects.config_engine_type%TYPE;
19687 l_is_solver_model BOOLEAN;
19688
19689 CURSOR model_cur(in_root_model NUMBER) IS
19690 SELECT DISTINCT component_id
19691 FROM cz_model_ref_expls
19692 WHERE deleted_flag = '0' AND model_id = in_root_model AND ps_node_type = 263;
19693 BEGIN
19694 fnd_msg_pub.initialize;
19695
19696 IF p_model_id IS NOT NULL THEN
19697 x_return_status := 0;
19698 x_msg_data := '';
19699
19700 BEGIN
19701 SELECT last_logic_update, config_engine_type, NAME
19702 INTO l_prj_last_logic_update, l_engine_type, l_root_model_name
19703 FROM cz_devl_projects
19704 WHERE devl_project_id = p_model_id AND deleted_flag = '0';
19705 EXCEPTION
19706 WHEN NO_DATA_FOUND THEN
19707 RAISE;
19708 END;
19709
19710 l_is_solver_model := (l_engine_type IS NOT NULL AND l_engine_type = ENGINE_TYPE_FCE);
19711
19712 IF l_is_solver_model THEN
19713 SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
19714 FROM cz_fce_files
19715 WHERE component_id = p_model_id AND deleted_flag = '0';
19716 ELSE
19717 SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
19718 FROM cz_lce_headers
19719 WHERE cz_lce_headers.component_id = p_model_id AND cz_lce_headers.deleted_flag = '0';
19720 END IF;
19721
19722 IF l_root_logic_last_update_date IS NULL OR l_root_logic_last_update_date < l_prj_last_logic_update THEN
19723 x_return_status := 1;
19724 x_msg_data := l_root_model_name;
19725 RETURN;
19726 END IF;
19727
19728 OPEN model_cur(p_model_id);
19729 LOOP
19730 FETCH model_cur INTO l_component_id;
19731 EXIT WHEN model_cur%NOTFOUND;
19732 --vsingava 30th Sep '08
19733 --bug6348111
19734 BEGIN
19735 SELECT last_logic_update, NAME, last_struct_update
19736 INTO l_prj_last_logic_update, l_model_name, l_prj_last_struct_update
19737 FROM cz_devl_projects
19738 WHERE cz_devl_projects.devl_project_id = l_component_id AND deleted_flag = '0';
19739 EXCEPTION
19740 WHEN OTHERS THEN
19741 l_prj_last_logic_update := NULL;
19742 END;
19743
19744 IF l_prj_last_logic_update IS NOT NULL THEN
19745 IF l_is_solver_model THEN
19746 SELECT MAX(last_update_date) INTO l_logic_last_update_date
19747 FROM cz_fce_files
19748 WHERE component_id = l_component_id AND deleted_flag = '0';
19749 ELSE
19750 SELECT MAX(last_update_date) INTO l_logic_last_update_date
19751 FROM cz_lce_headers
19752 WHERE cz_lce_headers.component_id = l_component_id AND cz_lce_headers.deleted_flag = '0';
19753 END IF;
19754 END IF;
19755
19756 IF l_prj_last_logic_update IS NULL OR l_logic_last_update_date IS NULL OR
19757 l_logic_last_update_date < l_prj_last_logic_update THEN
19758 x_return_status := 1;
19759 x_msg_data := l_model_name;
19760 EXIT;
19761 ELSIF l_root_logic_last_update_date < l_prj_last_struct_update THEN
19762 x_return_status := 1;
19763 x_msg_data := l_root_model_name;
19764 EXIT;
19765 END IF;
19766 END LOOP;
19767
19768 CLOSE model_cur;
19769 END IF;
19770 EXCEPTION
19771 WHEN OTHERS THEN
19772 x_return_status := 1;
19773 x_msg_data := SQLERRM;
19774 END is_model_upto_date;
19775 --------------------------------------------------------------------------------
19776 -- private, check all uis if input uidefid null, check the given ui tree otherwise
19777 PROCEDURE model_upto_date(modelid IN NUMBER, status IN OUT NOCOPY VARCHAR2, uidefid IN NUMBER DEFAULT NULL)
19778 AS
19779 l_model_name VARCHAR2(4000);
19780 l_ui_name cz_ui_defs.NAME%TYPE;
19781 l_ui_model_name VARCHAR2(4000);
19782 l_model_status NUMBER;
19783 l_ui_status NUMBER;
19784 l_folder_id NUMBER;
19785 l_folder_path VARCHAR2(4000);
19786 l_model_upto_date BOOLEAN;
19787 l_ui_upto_date BOOLEAN;
19788 l_uidef_tbl t_ref;
19789 BEGIN
19790 l_model_upto_date := TRUE;
19791 is_model_upto_date(modelid, l_model_status, l_model_name);
19792
19793 IF l_model_status IS NOT NULL AND l_model_status <> 0 THEN
19794 l_model_upto_date := FALSE;
19795 END IF;
19796
19797 l_ui_upto_date := TRUE;
19798
19799 IF uidefid IS NULL THEN
19800 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
19801 SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
19802 FROM cz_ui_defs
19803 WHERE deleted_flag='0' AND ui_style=g_ui_style_jrad AND devl_project_id IN
19804 (SELECT component_id FROM cz_model_ref_expls
19805 WHERE deleted_flag='0' AND model_id=modelid);
19806 ELSE
19807 SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
19808 FROM cz_ui_defs
19809 WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
19810 (SELECT component_id FROM cz_model_ref_expls
19811 WHERE deleted_flag='0' AND model_id=modelid);
19812 END IF;
19813
19814 IF l_uidef_tbl.COUNT > 0 THEN
19815 FOR i IN l_uidef_tbl.FIRST .. l_uidef_tbl.LAST LOOP
19816 is_ui_upto_date(p_ui_def_id => l_uidef_tbl(i)
19817 ,p_report_model_info => 1
19818 ,x_return_status => l_ui_status
19819 ,x_msg_data => l_ui_name
19820 ,x_model_name => l_ui_model_name
19821 ,p_check_root_ui_only=> TRUE
19822 );
19823 IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
19824 l_ui_upto_date := FALSE;
19825 EXIT;
19826 END IF;
19827 END LOOP;
19828 END IF;
19829 ELSE
19830 is_ui_upto_date(uidefid, 1, l_ui_status, l_ui_name, l_ui_model_name);
19831 IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
19832 l_ui_upto_date := FALSE;
19833 END IF;
19834 END IF;
19835
19836 -- l_status := NVL(l_model_status,0) + NVL(l_ui_status,0);
19837 -- 0 ok, 1 model not up to date, 2 ui node up to date, 3 both model and ui not up to date
19838 IF NOT l_ui_upto_date OR NOT l_model_upto_date THEN
19839 BEGIN
19840 SELECT enclosing_folder
19841 INTO l_folder_id
19842 FROM cz_rp_entries
19843 WHERE object_id = modelid AND enclosing_folder <> 0 AND object_type = 'PRJ' AND deleted_flag = '0';
19844
19845 FOR rp_rec IN (SELECT NAME
19846 FROM cz_rp_entries
19847 START WITH object_type = 'FLD' AND object_id = l_folder_id
19848 CONNECT BY PRIOR enclosing_folder = object_id AND object_type = 'FLD' AND object_id <> 0 AND deleted_flag = '0')
19849 LOOP
19850 l_folder_path := rp_rec.NAME || '/' || l_folder_path;
19851 END LOOP;
19852 EXCEPTION
19853 WHEN OTHERS THEN
19854 l_folder_path := NULL;
19855 END;
19856 END IF;
19857
19858 IF l_folder_path IS NOT NULL AND NOT l_model_upto_date THEN
19859 l_model_name := l_folder_path || l_model_name;
19860 END IF;
19861
19862 IF l_folder_path IS NOT NULL AND NOT l_ui_upto_date THEN
19863 l_ui_model_name := l_folder_path || l_ui_model_name;
19864 END IF;
19865
19866 IF NOT l_ui_upto_date AND l_model_upto_date THEN -- l_status = 2
19867 status :=
19868 cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', CZ_UTILS.GET_TEXT('CZ_UI_TEXT') || ' ''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
19869 ELSIF l_ui_upto_date AND NOT l_model_upto_date THEN -- l_status = 1
19870 status := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', CZ_UTILS.GET_TEXT('CZ_LOGIC_TEXT') , 'MODELID', '''' || l_model_name || '''');
19871 ELSIF NOT l_ui_upto_date AND NOT l_model_upto_date THEN -- l_status = 3
19872 status :=
19873 cz_utils.get_text('CZ_PB_UI_LOGIC_NOT_UP_TO_DATE', 'STRING', '''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
19874 ELSE
19875 status := '0';
19876 END IF;
19877 EXCEPTION
19878 WHEN OTHERS THEN
19879 log_pb_errors(SQLERRM, 1, 'cz_pb_mgr.MODEL_UPTO_DATE', SQLCODE);
19880 raise_application_error(-20010, SQLERRM);
19881 END model_upto_date;
19882 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19883 -- public
19884 PROCEDURE model_upto_date(modelid IN NUMBER, uidefid IN NUMBER, status IN OUT NOCOPY VARCHAR2)
19885 AS
19886 BEGIN
19887 model_upto_date(modelid, status, uidefid);
19888 END model_upto_date;
19889 ----------------------------------------------------------------------------------
19890 FUNCTION migrate_name(p_devl_project_id IN NUMBER)
19891 RETURN VARCHAR2
19892 IS
19893 original_name cz_devl_projects.NAME%TYPE;
19894 v_name cz_devl_projects.NAME%TYPE;
19895 v_instance_name cz_servers.instance_name%TYPE;
19896 v_null PLS_INTEGER;
19897 l_endBr varchar2(3):=NULL;
19898 BEGIN
19899 BEGIN
19900 SELECT instance_name
19901 INTO v_instance_name
19902 FROM cz_servers
19903 WHERE server_local_id = 0;
19904
19905 SELECT NAME
19906 INTO original_name
19907 FROM cz_rp_entries
19908 WHERE object_id = p_devl_project_id AND object_type = 'PRJ' AND deleted_flag = '0';
19909 EXCEPTION
19910 WHEN NO_DATA_FOUND
19911 THEN
19912 original_name := NULL;
19913 RAISE;
19914 WHEN OTHERS
19915 THEN
19916 original_name := NULL;
19917 RAISE;
19918 END;
19919
19920 IF (original_name IS NOT NULL)
19921 THEN
19922 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
19923 v_name := SUBSTR (original_name|| '-[FCE]', 1, 235);
19924
19925 ELSE
19926 v_name :=
19927 SUBSTR (original_name
19928 || ' (Migrated from '
19929 || v_instance_name
19930 || ':'
19931 || REPLACE(cz_developer_utils_pvt.get_repository_path(p_devl_project_id, 'PRJ'), '/', '.'), 1, 235);
19932 -- Bug 5514199; 12-Sep-2006; kdande; Taking 235 chars only as other characters would be appended at runtime like copy x, rules etc
19933 END IF;
19934
19935 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
19936 l_endBr:='';
19937 ELSE
19938 l_endBr:=')';
19939 END IF;
19940 BEGIN
19941 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_rp_entries'
19942 || cz_pb_mgr.v_db_link
19943 || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
19944 || ' name = :1'
19945 INTO v_null
19946 USING v_name || l_endBr;
19947 EXCEPTION
19948 WHEN NO_DATA_FOUND
19949 THEN
19950 RETURN v_name || l_endBr;
19951 END;
19952
19953 BEGIN
19954 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM cz_rp_entries'
19955 || cz_pb_mgr.v_db_link
19956 || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
19957 || ' name LIKE :1'
19958 INTO v_null
19959 USING v_name || ' copy _%'||l_endBr;
19960
19961 --This is copy v_null + 1.
19962 RETURN v_name || ' copy ' || TO_CHAR(v_null + 1) || l_endBr;
19963 EXCEPTION
19964 WHEN NO_DATA_FOUND
19965 THEN
19966 RETURN v_name || ' copy 1'||l_endBr;
19967 END;
19968 END IF;
19969 EXCEPTION
19970 WHEN OTHERS
19971 THEN
19972 log_report('cz_utils', 'migrate_name', 1, SQLERRM, fnd_log.level_unexpected);
19973 v_name := 'ERROR';
19974 RETURN v_name;
19975 END;
19976
19977 ----------------------------------------------------------------------------------
19978 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19979 ---------procedure to publish a single model
19980 PROCEDURE publish_model(publicationid IN NUMBER, x_run_id IN OUT NOCOPY NUMBER, x_pb_status IN OUT NOCOPY VARCHAR2)
19981 AS
19982 l_publication_proc CONSTANT VARCHAR2(10) := 'CZ_PB_MGR';
19983 l_migration_proc CONSTANT VARCHAR2(20) := 'CZ_MODEL_MIGRATION';
19984 l_proc_name v$session.module%TYPE;
19985 v_check_publication BOOLEAN;
19986 v_new_copy_pb_id cz_model_publications.publication_id%TYPE;
19987 v_new_model_id cz_model_publications.model_id%TYPE;
19988 v_prev_publication_id cz_model_publications.publication_id%TYPE;
19989 v_prev_export_status cz_model_publications.export_status%TYPE;
19990 v_cur_export_status cz_model_publications.export_status%TYPE;
19991 v_pb_mode cz_model_publications.publication_mode%TYPE;
19992 l_tgt_status VARCHAR2(1);
19993 l_tgt_msg VARCHAR2(2000);
19994 l_msg_data VARCHAR2(2000);
19995 l_msg_count NUMBER;
19996 l_lock_status VARCHAR2(1);
19997 v_rp_entries_name cz_rp_entries.NAME%TYPE;
19998 v_rp_entries_desc cz_rp_entries.description%TYPE;
19999 v_object_id cz_rp_entries.object_id%TYPE;
20000 v_rp_orig_sys_ref VARCHAR2(255);
20001 v_imp_ps_node_count PLS_INTEGER;
20002 l_locked_models cz_security_pvt.number_type_tbl;
20003 l_upto_date_status VARCHAR2(2000);
20004 l_msg_index NUMBER;
20005 v_max_rec_id NUMBER;
20006 l_message VARCHAR2(32000);
20007 l_srcroot VARCHAR2(32000);
20008 l_targrootpath VARCHAR2(32000);
20009 l_srcmodel VARCHAR2(32000);
20010 l_tgt_fld_path VARCHAR2(32000);
20011 v_org_id cz_xfr_project_bills.organization_id%TYPE; -- Bug9031588
20012 v_component_item_id cz_xfr_project_bills.component_item_id%TYPE; -- Bug9031588
20013 v_top_item_id cz_xfr_project_bills.top_item_id%TYPE; -- Bug9031588
20014
20015 v_import_server_on_remote cz_servers.server_local_id%TYPE;
20016 l_target_imp_server_on_local cz_servers.server_local_id%TYPE;
20017 l_instance_nm cz_servers.instance_name%TYPE;
20018
20019 has_no_priv_to_publish EXCEPTION;
20020 failed_to_lock_model EXCEPTION;
20021 priv_check_err EXCEPTION;
20022 not_global_template EXCEPTION;
20023 model_not_upto_date EXCEPTION;
20024 invalid_object_type EXCEPTION;
20025 user_not_initialized EXCEPTION;
20026 cz_pb_link_problem EXCEPTION;
20027
20028 BEGIN
20029 pbdebug := 22001;
20030 delete_session_parameters;
20031 clear_all_tables(cz_pb_mgr.v_status_code);
20032 initialize_pb_parameters(publicationid);
20033 get_multi_server_pub_flg; -- bug #10417318
20034
20035 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20036 log_timing_message('After get_multi_server_pub_flg: Multi Server Pub Flag is : '||vMultiServerPub);
20037 END IF;
20038
20039 IF (fnd_global.user_name IS NULL) THEN
20040 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', 'User is not initialized on session');
20041 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CHECKUSER', 21002);
20042 RAISE user_not_initialized;
20043 END IF;
20044
20045 get_source_pb_info(publicationid
20046 ,cz_pb_mgr.v_root_model_id
20047 ,cz_pb_mgr.v_root_ui_def_id
20048 ,cz_pb_mgr.v_server_id
20049 ,v_cur_export_status
20050 ,cz_pb_mgr.remote_publication_id
20051 ,g_object_type
20052 ,v_pb_mode
20053 ,cz_pb_mgr.v_status_code
20054 );
20055
20056 -- check if there is another publishing or a pub sync or a migration process running
20057 -- bug #10417318. If multipublicaiton enabled then making sure to allow parallel CP requests
20058 IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
20059 BEGIN
20060 IF (vMultiServerPub = 'YES') THEN
20061 dbms_application_info.set_client_info(cz_pb_mgr.v_server_id);
20062 log_timing_message('Entered into Multi Server publication ');
20063 SELECT module INTO l_proc_name FROM V$SESSION WHERE module=l_publication_proc
20064 AND client_info = TO_CHAR(cz_pb_mgr.v_server_id);
20065 ELSE
20066 l_proc_name := cz_pb_sync_util.check_process;
20067 END IF;
20068 EXCEPTION
20069 WHEN NO_DATA_FOUND THEN
20070 NULL;
20071 END;
20072 ELSE -- must be migration because no stand alone UIT publication
20073 BEGIN
20074 SELECT module INTO l_proc_name FROM V$SESSION WHERE module = l_migration_proc;
20075 EXCEPTION
20076 WHEN NO_DATA_FOUND THEN
20077 NULL;
20078 END;
20079 END IF;
20080
20081 IF l_proc_name IS NOT NULL THEN
20082
20083 IF l_proc_name = l_publication_proc THEN
20084 -- bug #10417318
20085 IF (vMultiServerPub = 'YES') THEN
20086 SELECT instance_name INTO l_instance_nm FROM CZ_SERVERS WHERE server_local_id = cz_pb_mgr.v_server_id;
20087 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PARALLEL_PROCESS_EXISTS', 'PROC_TYPE', 'publication', 'TGT_NAME', l_instance_nm );
20088 cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 1;
20089 ELSE
20090 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'publication');
20091 cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20092 END IF;
20093 ELSIF l_proc_name = l_migration_proc THEN
20094 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'model migration');
20095 cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20096 ELSE
20097 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_SYNC_PROCESS_EXISTS');
20098 cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20099 END IF;
20100 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message,'cz_pb_mgr.CHKPROCESS',21001);
20101 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20102 x_pb_status := PUBLICATION_ERROR;
20103 log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
20104 RETURN;
20105 END IF;
20106
20107 -- register application
20108 IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
20109 dbms_application_info.set_module(l_publication_proc, '');
20110 ELSE
20111 dbms_application_info.set_module(l_migration_proc, '');
20112 END IF;
20113
20114 BEGIN
20115 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20116 log_timing_message('start publish model');
20117 END IF;
20118
20119 ----check if model is up to date
20120 -- IF (g_object_type = MODEL_PUBLICATION) THEN
20121 model_upto_date(cz_pb_mgr.v_root_model_id, l_upto_date_status);
20122
20123 IF (l_upto_date_status <> '0') THEN
20124 cz_pb_mgr.v_err_message := l_upto_date_status;
20125 RAISE model_not_upto_date;
20126 END IF;
20127 -- END IF;
20128
20129 IF (g_object_type = template_publication) THEN
20130 check_ui_template_exist(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_status_code);
20131
20132 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20133 RAISE not_global_template;
20134 END IF;
20135 ELSIF(g_object_type = MODEL_PUBLICATION) THEN
20136 check_model_ui_exist(publicationid, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_root_ui_def_id, cz_pb_mgr.v_status_code);
20137 ELSIF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
20138 RAISE invalid_object_type;
20139 END IF;
20140
20141 check_export_status(v_cur_export_status, cz_publish, cz_pb_mgr.v_status_code);
20142
20143 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20144 RAISE invalid_object_type;
20145 END IF;
20146
20147 ------ retrieve_db_link
20148 cz_pb_mgr.v_db_link := retrieve_db_link(cz_pb_mgr.v_server_id);
20149
20150 -----check for source server flag on the target instance
20151 IF (cz_pb_mgr.v_server_id <> 0) THEN
20152 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
20153 cz_pb_sync_util.verify_mig_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
20154 ELSE
20155 cz_pb_sync_util.verify_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
20156 END IF;
20157
20158 IF (l_tgt_status <> '0') THEN
20159
20160 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', l_tgt_msg);
20161 RAISE cz_pb_link_problem;
20162 END IF;
20163 END IF;
20164
20165 l_target_imp_server_on_local := cz_pb_mgr.v_server_id;
20166
20167 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
20168
20169 ----check for remote publication id on the target instance
20170
20171 remote_pb_check(cz_pb_mgr.remote_publication_id);
20172
20173 ELSE
20174
20175 /*
20176 * Bug 5516478
20177 * On migrating a model to a remote server, if there are BOM models involved,
20178 * CZ_XFR_PROJECT_BILLS are also migrated. However, the column SOURCE_SERVER
20179 * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
20180 * migration target. Currently it was being copied from the source to the
20181 * target. In order to do this we need to query CZ_SERVERS in the migration
20182 * target to get the SERVER_LOCAL_ID.
20183 */
20184
20185 v_import_server_on_remote := getRemoteImportServer(l_target_imp_server_on_local);
20186
20187 END IF;
20188
20189 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20190 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20191 log_timing_message('start has_tobe_published');
20192 END IF;
20193
20194 ----check if the publication has to be published
20195 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
20196 v_check_publication := has_tobe_published(publicationid);
20197 ELSE
20198 v_check_publication := TRUE;
20199 ---for publishing, rules related tables are cleared in get_oa_tmpls
20200 ---which is called from has_to_be_published.
20201 ---for model migration, get_oa_tmpls is called from upload_ui_schema
20202 ---at which point, tables cannot be cleared because rules of the model have
20203 ---already been collected in these tables from bulk_collect_rules.
20204 ---so, if model migration, the rules related tables will NOT be cleared
20205 ---get_oa_tmpls.
20206 clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
20207 END IF;
20208
20209 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20210 log_timing_message('end has_tobe_published');
20211 END IF;
20212
20213 -- bug #10417318
20214 IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
20215 cz_security_pvt.lock_pub_model(1.0
20216 ,cz_pb_mgr.v_root_model_id
20217 ,fnd_api.g_true
20218 ,fnd_api.g_true
20219 ,fnd_api.g_false
20220 ,cz_pb_mgr.v_server_id
20221 ,cz_pb_mgr.v_publication_id
20222 ,l_locked_models
20223 ,l_lock_status
20224 ,l_msg_count
20225 ,l_msg_data
20226 );
20227 ELSE
20228 cz_security_pvt.lock_model(1.0
20229 ,cz_pb_mgr.v_root_model_id
20230 ,fnd_api.g_true
20231 ,fnd_api.g_true
20232 ,l_locked_models
20233 ,l_lock_status
20234 ,l_msg_count
20235 ,l_msg_data
20236 );
20237 END IF;
20238
20239 IF (l_lock_status <> 'S') THEN
20240 l_msg_index := 1;
20241
20242 WHILE l_msg_count > 0
20243 LOOP
20244 cz_pb_mgr.v_err_message :=
20245 cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', fnd_msg_pub.get(l_msg_index, fnd_api.g_false));
20246 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
20247 l_msg_index := l_msg_index + 1;
20248 l_msg_count := l_msg_count - 1;
20249 END LOOP;
20250
20251 RAISE failed_to_lock_model;
20252 END IF;
20253
20254 UPDATE cz_model_publications
20255 SET export_status = publication_processing
20256 WHERE publication_id = cz_pb_mgr.v_publication_id;
20257
20258 IF (v_check_publication) THEN
20259 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20260 log_timing_message('start verify_model_for_sync');
20261 END IF;
20262
20263 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
20264 verify_model_for_sync(l_target_imp_server_on_local, cz_pb_mgr.v_root_model_id);
20265 END IF;
20266
20267 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20268 log_timing_message('end verify_model_for_sync');
20269 log_timing_message('start proc_export');
20270 END IF;
20271
20272 BEGIN
20273 proc_export(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, cz_pb_mgr.v_status_code);
20274
20275 IF ((cz_pb_mgr.v_root_model_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy) AND(cz_pb_mgr.v_models_to_be_exported.COUNT = 0)) THEN
20276 cz_pb_mgr.v_err_message := 'model data up to date, no fresh data export required';
20277 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.publish_model', SQLCODE);
20278 END IF;
20279
20280 insert_template_elements;
20281
20282 --------------------------------------------------------------------------------------------
20283 --If this is Model Migration, insert into cz_rp_entries, calculate max_persistent_rec_id and
20284 --and insert into CZ_PERSISTENT_REC_IDS with its value, report the migrated and not migrated models.
20285 --------------------------------------------------------------------------------------------
20286
20287 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20288 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
20289 EXECUTE IMMEDIATE 'SELECT REPLACE(cz_developer_utils_pvt.get_repository_path'
20290 || cz_pb_mgr.v_db_link
20291 || '(:1, ''FLD''), ''/'', ''.'') FROM DUAL'
20292 INTO l_tgt_fld_path
20293 USING cz_pb_mgr.g_migration_tgt_folder_id;
20294
20295 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
20296 v_imp_ps_node_count := 0;
20297
20298 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
20299 LOOP
20300 v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
20301 cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
20302 cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
20303
20304 BEGIN
20305 SELECT remote_model_id
20306 INTO v_object_id
20307 FROM cz_pb_model_exports
20308 WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
20309 AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
20310 EXCEPTION
20311 WHEN OTHERS THEN
20312 cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
20313 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20314 END;
20315
20316 BEGIN
20317 SELECT desc_text, orig_sys_ref
20318 INTO v_rp_entries_desc, v_rp_orig_sys_ref
20319 FROM cz_devl_projects
20320 WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
20321 EXCEPTION
20322 WHEN NO_DATA_FOUND THEN
20323 v_rp_orig_sys_ref := NULL;
20324 cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
20325 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20326 WHEN OTHERS THEN
20327 v_rp_orig_sys_ref := NULL;
20328 cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
20329 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20330 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20331 END;
20332
20333 v_rp_entries_name := migrate_name(cz_pb_mgr.v_models_to_be_exported(i));
20334
20335 IF (v_rp_entries_name = 'ERROR') THEN
20336 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20337 END IF;
20338
20339 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20340 cz_pb_mgr.v_new_object_id := v_object_id;
20341
20342 BEGIN
20343 cz_pb_mgr.v_rp_folder_id := cz_pb_mgr.g_migration_tgt_folder_id;
20344 cz_pb_mgr.v_rp_name := v_rp_entries_name;
20345 cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
20346
20347 EXECUTE IMMEDIATE 'BEGIN'
20348 || ' '
20349 || 'insert into cz_rp_entries'
20350 || cz_pb_mgr.v_db_link
20351 || ' ( OBJECT_TYPE'
20352 || ' '
20353 || ',OBJECT_ID'
20354 || ' '
20355 || ',ENCLOSING_FOLDER'
20356 || ' '
20357 || ',NAME'
20358 || ' '
20359 || ',DESCRIPTION'
20360 || ' '
20361 || ',DELETED_FLAG'
20362 || ' '
20363 || ',SEEDED_FLAG'
20364 || ' '
20365 || ')'
20366 || ' '
20367 || 'VALUES ( ''PRJ'''
20368 || ' '
20369 || ',cz_pb_mgr.v_new_object_id'
20370 || ' '
20371 || ',cz_pb_mgr.v_rp_folder_id'
20372 || ' '
20373 || ',cz_pb_mgr.v_rp_name'
20374 || ' '
20375 || ',cz_pb_mgr.v_rp_desc'
20376 || ' '
20377 || ',''0'''
20378 || ' '
20379 || ',''0'');'
20380 || ' '
20381 || 'commit;'
20382 || ' '
20383 || 'END;';
20384 EXCEPTION
20385 WHEN OTHERS THEN
20386 cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
20387 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20388 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20389 END;
20390
20391 BEGIN
20392 IF (cz_pb_mgr.v_rp_name IS NOT NULL) THEN
20393
20394 EXECUTE IMMEDIATE 'BEGIN'
20395 || ' '
20396 || 'UPDATE cz_devl_projects'
20397 || cz_pb_mgr.v_db_link
20398 || ' t'
20399 || ' '
20400 || 'SET t.name = cz_pb_mgr.v_rp_name'
20401 || ', post_migr_change_flag = '''
20402 || cz_model_migration_pvt.change_flag_unchanged
20403 || ''' '
20404 || 'WHERE t.devl_project_id = '
20405 || cz_pb_mgr.v_new_object_id
20406 || ';'
20407 || ' '
20408 || 'END;';
20409
20410 END IF;
20411
20412 COMMIT;
20413 EXCEPTION
20414 WHEN OTHERS THEN
20415 cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
20416 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20417 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20418 END;
20419
20420 --Calculate the max_persistent_rec_id for the model and insert into CZ_PERSISTENT_REC_IDS.
20421 EXECUTE IMMEDIATE 'SELECT GREATEST(NVL((SELECT MAX(persistent_node_id) FROM cz_ps_nodes'
20422 || cz_pb_mgr.v_db_link
20423 || ' WHERE deleted_flag = ''0'' AND devl_project_id = :1), 0),'
20424 || ' NVL((SELECT MAX(persistent_rule_id) FROM cz_rules'
20425 || cz_pb_mgr.v_db_link
20426 || ' WHERE deleted_flag = ''0'' AND devl_project_id = :2), 0),'
20427 || ' NVL((SELECT MAX(persistent_intl_text_id) FROM cz_localized_texts'
20428 || cz_pb_mgr.v_db_link
20429 || ' WHERE deleted_flag = ''0'' AND model_id = :3), 0)) FROM DUAL'
20430 INTO v_max_rec_id
20431 USING v_object_id, v_object_id, v_object_id;
20432
20433
20434 BEGIN
20435
20436 EXECUTE IMMEDIATE 'BEGIN'
20437 || ' '
20438 || 'INSERT INTO CZ_PERSISTENT_REC_IDS'
20439 || cz_pb_mgr.v_db_link
20440 || '(devl_project_id,max_persistent_rec_id,deleted_flag)'
20441 || ' '
20442 || 'values(:1,:2,0) '
20443 || ';'
20444 || ' '
20445 || 'END;' USING cz_pb_mgr.v_new_object_id,v_max_rec_id;
20446
20447
20448 COMMIT;
20449 EXCEPTION
20450 WHEN OTHERS THEN
20451 cz_pb_mgr.v_err_message := 'Error in inserting into CZ_PERSISTENT_REC_IDS' || SQLERRM;
20452 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20453 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20454 END;
20455
20456 ------insert into cz_xfr_project_bills
20457 IF (v_rp_orig_sys_ref IS NOT NULL) THEN
20458 BEGIN
20459 -- Bug9031588
20460 SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.projectBill_orgId(organization_id), organization_id)
20461 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.projectBill_compItemId(component_item_id),component_item_id)
20462 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.projectBill_topItemId(top_item_id),top_item_id)
20463 INTO v_org_id, v_component_item_id, v_top_item_id
20464 FROM cz_xfr_project_bills
20465 WHERE cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node
20466 AND cz_xfr_project_bills.deleted_flag = '0';
20467
20468 EXECUTE IMMEDIATE 'BEGIN'
20469 || ' '
20470 || 'insert into cz_xfr_project_bills'
20471 || cz_pb_mgr.v_db_link
20472 || ' ('
20473 || ' '
20474 || 'MODEL_PS_NODE_ID'
20475 || ' '
20476 || ',ORGANIZATION_ID'
20477 || ' '
20478 || ',COMPONENT_ITEM_ID'
20479 || ' '
20480 || ',DESCRIPTION'
20481 || ' '
20482 || ',LAST_IMPORT_RUN_ID'
20483 || ' '
20484 || ',LAST_IMPORT_DATE'
20485 || ' '
20486 || ',SOURCE_BILL_DELETED'
20487 || ' '
20488 || ',TOP_ITEM_ID'
20489 || ' '
20490 || ',DELETED_FLAG'
20491 || ' '
20492 || ',EXPLOSION_TYPE'
20493 || ' '
20494 || ',BILL_REVISION_DATE'
20495 || ' '
20496 || ',EFF_FROM'
20497 || ' '
20498 || ',EFF_TO'
20499 || ' '
20500 || ',SOURCE_SERVER'
20501 || ' '
20502 || ',COPY_ADDL_CHILD_MODELS'
20503 || ' '
20504 || ')'
20505 || ' '
20506 || 'SELECT cz_pb_mgr.v_new_object_id'
20507 || ' '
20508 || ',:1'
20509 || ' '
20510 || ',:2'
20511 || ' '
20512 || ',DESCRIPTION'
20513 || ' '
20514 || ',LAST_IMPORT_RUN_ID'
20515 || ' '
20516 || ',LAST_IMPORT_DATE'
20517 || ' '
20518 || ',SOURCE_BILL_DELETED'
20519 || ' '
20520 || ',:3'
20521 || ' '
20522 || ',DELETED_FLAG'
20523 || ' '
20524 || ',EXPLOSION_TYPE'
20525 || ' '
20526 || ',BILL_REVISION_DATE'
20527 || ' '
20528 || ',EFF_FROM'
20529 || ' '
20530 || ',EFF_TO'
20531 || ' '
20532 || ',:4'
20533 || ' '
20534 || ',COPY_ADDL_CHILD_MODELS'
20535 || ' '
20536 || 'FROM cz_xfr_project_bills'
20537 || ' '
20538 || 'WHERE cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
20539 || ' '
20540 || 'AND cz_xfr_project_bills.deleted_flag = ''0'';'
20541 || ' '
20542 || 'commit;'
20543 || ' '
20544 || 'END;'
20545 USING v_org_id, v_component_item_id, v_top_item_id, v_import_server_on_remote; -- Bug9031588
20546 EXCEPTION
20547 WHEN NO_DATA_FOUND THEN
20548 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
20549 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20550 WHEN OTHERS THEN
20551 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
20552 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
20553 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20554 END;
20555 END IF;
20556 END IF;
20557
20558 IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
20559 l_srcroot := REPLACE(cz_developer_utils_pvt.get_repository_path(cz_pb_mgr.v_root_model_id, 'PRJ'), '/', '.');
20560 l_targrootpath := l_tgt_fld_path || '.' || v_rp_entries_name;
20561 END IF;
20562
20563 v_remote_names_exported(i) := v_rp_entries_name;
20564 END LOOP;
20565
20566 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20567 FOR i IN 1 .. v_models_to_be_exported.COUNT
20568 LOOP
20569 IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
20570 --Root Model %SRCROOT was migrated to instance %TARGET as %TARGROOTPATH.
20571 l_message :=
20572 cz_utils.get_text('CZ_MM_ROOT_EXPORTED'
20573 ,'SRCROOT'
20574 ,l_srcroot
20575 ,'TARGET'
20576 ,cz_pb_mgr.v_server_local_name
20577 ,'TARGROOTPATH'
20578 ,l_targrootpath
20579 );
20580 log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
20581 ELSE
20582 --Referenced Model %SRCMODEL was migrated to instance %TARGET as %TARGREPOSPATH when migrating %SRCROOT to %TARGROOTPATH.
20583 l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_to_be_exported(i), 'PRJ'), '/', '.');
20584 l_message :=
20585 cz_utils.get_text('CZ_MM_MODEL_EXPORTED'
20586 ,'SRCMODEL'
20587 ,l_srcmodel
20588 ,'TARGET'
20589 ,cz_pb_mgr.v_server_local_name
20590 ,'TARGREPOSPATH'
20591 , l_tgt_fld_path || '.' || v_remote_names_exported(i)
20592 ,'SRCROOT'
20593 ,l_srcroot
20594 ,'TARGROOTPATH'
20595 ,l_targrootpath
20596 );
20597 log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
20598 END IF;
20599 END LOOP;
20600 END IF;
20601 END IF;
20602
20603 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20604 FOR i IN 1 .. v_models_not_to_be_exported.COUNT
20605 LOOP
20606 --Referenced Model %SRCMODEL is unchanged locally and on instance %TARGET since its prior migration as %TARGREPOSPATH.
20607 --It has been reused in migrating root Model %SRCROOT to %TARGROOTPATH.
20608 l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_not_to_be_exported(i), 'PRJ'), '/', '.');
20609 l_message :=
20610 cz_utils.get_text('CZ_MM_MODEL_NOT_EXPORTED'
20611 ,'SRCMODEL'
20612 ,l_srcmodel
20613 ,'TARGET'
20614 ,cz_pb_mgr.v_server_local_name
20615 ,'TARGREPOSPATH'
20616 ,v_remote_names_not_exported(v_models_not_to_be_exported(i))
20617 ,'SRCROOT'
20618 ,l_srcroot
20619 ,'TARGROOTPATH'
20620 ,l_targrootpath
20621 );
20622 log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
20623 END LOOP;
20624 END IF;
20625 END IF;
20626 END IF;
20627
20628 --------------------------------------------------------------------------------------------
20629 --End of Model Migration section.
20630 --------------------------------------------------------------------------------------------
20631
20632 -------update source pb record
20633 update_pb_status(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_status_code, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code);
20634
20635 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
20636 cz_pb_mgr.v_err_message :=
20637 cz_utils.get_text('CZ_PB_SUCCESS', 'MODELID', cz_pb_mgr.v_root_model_id, 'SERVERID', cz_pb_mgr.v_server_id);
20638 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_MODEL', SQLCODE);
20639 ELSE
20640 cz_pb_mgr.global_export_retcode := 2;
20641 rollback_data(cz_pb_mgr.v_db_link);
20642 END IF;
20643
20644 COMMIT;
20645 EXCEPTION
20646 WHEN OTHERS THEN
20647 -----message already logged
20648 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20649 update_publication_status(cz_pb_mgr.v_publication_id, PUBLICATION_ERROR, empty_string);
20650 END;
20651
20652 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20653 log_timing_message('end proc_export');
20654 END IF;
20655 ELSE /* else of IF (v_check_publication) THEN */
20656 BEGIN
20657 IF (cz_pb_mgr.remote_publication_id IS NOT NULL) THEN
20658 get_republish_pb_info(cz_pb_mgr.remote_publication_id
20659 ,'PUP'
20660 ,v_prev_publication_id
20661 ,v_prev_export_status
20662 ,cz_pb_mgr.v_prev_remote_publication_id
20663 ,cz_pb_mgr.v_status_code
20664 );
20665
20666 IF (v_prev_publication_id > 0) THEN
20667 cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(publicationid);
20668 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZREPUB', SQLCODE);
20669 END IF;
20670 ELSIF(cz_pb_mgr.remote_publication_id IS NULL) THEN
20671 get_max_pub_id(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_new_copy_pb_id, cz_pb_mgr.v_status_code);
20672 get_new_copy_pb_info(v_new_copy_pb_id
20673 ,v_prev_publication_id
20674 ,v_prev_export_status
20675 ,cz_pb_mgr.v_prev_remote_publication_id
20676 ,cz_pb_mgr.v_status_code
20677 );
20678
20679 IF (v_prev_publication_id > 0) THEN
20680 cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(NVL(publicationid, 0));
20681 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZNCOPY', SQLCODE);
20682 END IF;
20683 END IF; /* end if of IF (cz_pb_mgr.remote_publication_id IS NOT NULL) */
20684
20685 -------------get new sequence_no for the target publication_id
20686 get_new_publication_id(cz_pb_mgr.v_publication_id
20687 ,cz_pb_mgr.v_cz_model_pub_old_id
20688 ,cz_pb_mgr.v_cz_model_pub_new_id
20689 ,cz_pb_mgr.remote_publication_id
20690 ,cz_pb_mgr.v_status_code
20691 );
20692 ------get new ui def id and model id
20693 get_tgt_ui_def(cz_pb_mgr.v_root_ui_def_id
20694 ,cz_pb_mgr.v_prev_remote_publication_id
20695 ,v_new_model_id
20696 ,cz_pb_mgr.new_ui_def_id
20697 ,cz_pb_mgr.v_status_code
20698 );
20699 ------insert new target publication record
20700 insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
20701 ,cz_pb_mgr.v_cz_model_pub_old_id
20702 ,v_new_model_id
20703 ,cz_pb_mgr.new_ui_def_id
20704 ,cz_pb_mgr.v_db_link
20705 ,'REPUBLISH'
20706 ,cz_pb_mgr.v_status_code
20707 );
20708 ---------------insert applicability parameters for tgt publication
20709 insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
20710 ,cz_pb_mgr.v_cz_model_pub_old_id
20711 ,cz_pb_mgr.v_session_parameter
20712 ,cz_pb_mgr.v_db_link
20713 ,cz_pb_mgr.v_status_code
20714 );
20715 EXCEPTION
20716 WHEN OTHERS THEN
20717 -----message already logged
20718 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
20719 END;
20720
20721 ------reset status to the original if a re-publish fails
20722 IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP') THEN
20723 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20724 UPDATE cz_model_publications
20725 SET export_status = 'OK'
20726 WHERE publication_id = v_prev_publication_id;
20727 ELSE
20728 UPDATE cz_model_publications
20729 SET deleted_flag = '1'
20730 WHERE publication_id = v_prev_publication_id;
20731
20732 EXECUTE IMMEDIATE 'BEGIN'
20733 || ' '
20734 || 'UPDATE cz_model_publications'
20735 || cz_pb_mgr.v_db_link
20736 || ''
20737 || ' '
20738 || 'SET deleted_flag = ''1'''
20739 || ' '
20740 || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
20741 || ' '
20742 || 'END;';
20743 END IF;
20744 END IF;
20745
20746 -------update source pb record
20747 update_pb_status(cz_pb_mgr.v_publication_id, cz_pb_mgr.v_status_code, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code);
20748
20749 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
20750 -----set status for concurrent manager
20751 cz_pb_mgr.global_export_retcode := 2;
20752 rollback_data(cz_pb_mgr.v_db_link);
20753 END IF;
20754 END IF; /* end if of IF (v_check_publication) THEN */
20755 END IF; /* end if of (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) */
20756
20757 l_msg_count := 0;
20758 l_msg_index := 0;
20759
20760 -- bug #10417318
20761 IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
20762 cz_security_pvt.unlock_pub_model(1.0, fnd_api.g_true, l_locked_models, fnd_api.g_false, cz_pb_mgr.v_publication_id, l_lock_status, l_msg_count, l_msg_data );
20763 ELSE
20764 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
20765 END IF;
20766
20767 IF (l_lock_status <> 'S') THEN
20768 l_msg_index := 1;
20769
20770 WHILE l_msg_count > 0
20771 LOOP
20772 cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
20773 l_msg_index := l_msg_index + 1;
20774 l_msg_count := l_msg_count - 1;
20775 END LOOP;
20776 END IF;
20777
20778 -----insert_template_elements;
20779 -----------log trace
20780 IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR(cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
20781 log_pb_trace;
20782 END IF;
20783
20784 x_run_id := cz_pb_mgr.v_pb_run_id;
20785 x_pb_status := cz_pb_mgr.v_status_code;
20786 /* cz_security_pvt.unlock_entity (cz_pb_mgr.v_root_model_id,
20787 cz_security_pvt.PUBLISH_MODEL_FUNCTION,
20788 l_locked_models,
20789 l_lock_status,
20790 l_msg_count,
20791 l_msg_data); */
20792 delete_session_parameters;
20793 -----unregister application
20794 cz_pb_sync_util.reset_dbms_info;
20795 COMMIT;
20796
20797 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
20798 log_timing_message('end publish model');
20799 END IF;
20800
20801 COMMIT;
20802 EXCEPTION
20803 WHEN user_not_initialized THEN
20804 x_pb_status := PUBLICATION_ERROR;
20805 x_run_id := cz_pb_mgr.v_pb_run_id;
20806 cz_pb_mgr.global_export_retcode := 2;
20807 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20808 update_pup_status(publicationid);
20809 log_pb_trace;
20810 delete_session_parameters;
20811 WHEN priv_check_err THEN
20812 cz_pb_mgr.v_err_message := l_msg_data;
20813 x_pb_status := PUBLICATION_ERROR;
20814 x_run_id := cz_pb_mgr.v_pb_run_id;
20815 cz_pb_mgr.global_export_retcode := 2;
20816 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
20817 delete_session_parameters;
20818 WHEN has_no_priv_to_publish THEN
20819 cz_pb_mgr.v_err_message := l_msg_data;
20820 x_pb_status := PUBLICATION_ERROR;
20821 x_run_id := cz_pb_mgr.v_pb_run_id;
20822 cz_pb_mgr.global_export_retcode := 2;
20823 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
20824 delete_session_parameters;
20825 WHEN failed_to_lock_model THEN
20826 x_pb_status := PUBLICATION_ERROR;
20827 x_run_id := cz_pb_mgr.v_pb_run_id;
20828 cz_pb_mgr.global_export_retcode := 2;
20829 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20830 update_pup_status(publicationid);
20831 -- bug #10417318
20832 IF (cz_pb_mgr.v_session_parameter = pub_model AND vMultiServerPub = 'YES') THEN
20833 cz_security_pvt.unlock_pub_model(1.0, fnd_api.g_true, l_locked_models, fnd_api.g_false, publicationid, l_lock_status, l_msg_count, l_msg_data );
20834 ELSE
20835 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
20836 END IF;
20837 log_pb_trace;
20838 delete_session_parameters;
20839 WHEN not_global_template THEN
20840 x_pb_status := PUBLICATION_ERROR;
20841 x_run_id := cz_pb_mgr.v_pb_run_id;
20842 cz_pb_mgr.global_export_retcode := 2;
20843 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20844 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
20845 delete_session_parameters;
20846 WHEN model_not_upto_date THEN
20847 x_pb_status := PUBLICATION_ERROR;
20848 x_run_id := cz_pb_mgr.v_pb_run_id;
20849 cz_pb_mgr.global_export_retcode := 2;
20850 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20851 update_pup_status(publicationid);
20852 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRUPTODATE', -1);
20853 delete_session_parameters;
20854 WHEN invalid_object_type THEN
20855 x_pb_status := PUBLICATION_ERROR;
20856 x_run_id := cz_pb_mgr.v_pb_run_id;
20857 cz_pb_mgr.global_export_retcode := 2;
20858 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGROBJTYP', -1);
20859 delete_session_parameters;
20860 WHEN cz_pb_link_problem THEN
20861 x_pb_status := PUBLICATION_ERROR;
20862 x_run_id := cz_pb_mgr.v_pb_run_id;
20863 cz_pb_mgr.global_export_retcode := 2;
20864 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
20865 update_pup_status(publicationid);
20866 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRLNKPRBLM', -1);
20867 delete_session_parameters;
20868 END;
20869 -- bug #10417318. setting client_info to null
20870 dbms_application_info.set_client_info('');
20871 -- unregister application
20872 dbms_application_info.set_module('', '');
20873
20874 EXCEPTION
20875 WHEN OTHERS THEN
20876 x_run_id := cz_pb_mgr.v_pb_run_id ;
20877 x_pb_status := PUBLICATION_ERROR;
20878 cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
20879 log_pb_errors(SQLERRM,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
20880 -- bug #10417318. setting client_info to null
20881 dbms_application_info.set_client_info('');
20882 dbms_application_info.set_module('', '');
20883 RAISE;
20884 END publish_model;
20885
20886 ----------------------------------------------
20887 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20888 ------------wrappers used by concurrent manager to publish models
20889 PROCEDURE publish_models_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER)
20890 AS
20891 BEGIN
20892 retcode := 0;
20893 publish_all_models;
20894 errbuf := NULL;
20895
20896 IF (cz_pb_mgr.global_export_retcode = 1)
20897 THEN
20898 errbuf := cz_utils.get_text('CZ_PB_WARNING');
20899 END IF;
20900
20901 IF (cz_pb_mgr.global_export_retcode = 2)
20902 THEN
20903 errbuf := cz_utils.get_text('CZ_PB_FAILURE');
20904 END IF;
20905
20906 retcode := cz_pb_mgr.global_export_retcode;
20907 EXCEPTION
20908 WHEN OTHERS
20909 THEN
20910 retcode := 2;
20911 errbuf := cz_utils.get_text('CZ_PB_OTHERS');
20912 END;
20913
20914 PROCEDURE publish_single_model_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_publication_id NUMBER)
20915 AS
20916 v_run_id NUMBER := 0.0;
20917 v_pb_status VARCHAR2(3);
20918 BEGIN
20919 retcode := 0;
20920 cz_pb_mgr.global_export_retcode := 0;
20921 publish_model(p_publication_id, v_run_id, v_pb_status);
20922 errbuf := NULL;
20923
20924 IF (cz_pb_mgr.global_export_retcode = 1)
20925 THEN
20926 errbuf := cz_utils.get_text('CZ_PB_WARNING');
20927 END IF;
20928
20929 IF (cz_pb_mgr.global_export_retcode = 2)
20930 THEN
20931 errbuf := cz_utils.get_text('CZ_PB_FAILURE');
20932 END IF;
20933
20934 retcode := cz_pb_mgr.global_export_retcode;
20935 EXCEPTION
20936 WHEN OTHERS
20937 THEN
20938 retcode := 2;
20939 errbuf := cz_utils.get_text('CZ_PB_OTHERS');
20940 END;
20941
20942 --------------------------------------
20943 PROCEDURE seed_fnd_application_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_application_name VARCHAR2)
20944 AS
20945 v_run_id NUMBER := 0.0;
20946 v_pb_status VARCHAR2(3);
20947 l_application_id NUMBER;
20948 BEGIN
20949 retcode := 0;
20950
20951 SELECT application_id
20952 INTO l_application_id
20953 FROM fnd_application_tl
20954 WHERE fnd_application_tl.application_name = p_application_name AND fnd_application_tl.language = USERENV('LANG');
20955
20956 INSERT INTO cz_ext_applications
20957 (application_id, preferred_ui_style, seeded_flag, deleted_flag
20958 )
20959 VALUES (l_application_id, 3, '1', '0'
20960 );
20961
20962 errbuf := NULL;
20963 COMMIT;
20964 EXCEPTION
20965 WHEN OTHERS
20966 THEN
20967 retcode := 2;
20968 errbuf := cz_utils.get_text('CZ_APP_OTHERS', 'SQLERRM', SQLERRM);
20969 END;
20970
20971 ----------------------------------------
20972 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20973 ----------proc to delete a publication
20974 ----------
20975 PROCEDURE delete_publication(
20976 publicationid IN NUMBER
20977 ,x_return_status OUT NOCOPY VARCHAR2
20978 ,x_msg_count OUT NOCOPY NUMBER
20979 ,x_msg_data OUT NOCOPY VARCHAR2
20980 )
20981 AS
20982 v_server_id cz_model_publications.server_id%TYPE;
20983 v_cz_link_name cz_servers.cz_link_name%TYPE;
20984 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20985 v_export_status cz_model_publications.export_status%TYPE;
20986 l_tmp_publication NUMBER;
20987 l_object_type cz_model_publications.object_type%TYPE;
20988 l_reset_publication cz_model_publications.remote_publication_id%TYPE := 0;
20989 no_link_name EXCEPTION;
20990 invalid_object_type EXCEPTION;
20991 template_in_use EXCEPTION;
20992 cannot_del_pup EXCEPTION;
20993 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
20994 BEGIN
20995 fnd_msg_pub.initialize;
20996 x_return_status := FND_API.G_RET_STS_SUCCESS;
20997 x_msg_count := 0;
20998 x_msg_data := '';
20999 fnd_msg_pub.initialize;
21000
21001 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
21002 THEN
21003 l_pub_mode := cz_model_migration_pvt.mode_migration;
21004 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
21005 THEN
21006 l_pub_mode := cz_model_migration_pvt.mode_copy;
21007 END IF;
21008
21009 SELECT server_id, export_status, remote_publication_id, object_type
21010 INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
21011 FROM cz_model_publications
21012 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
21013
21014
21015 --execute the procedure that obsoletes the records
21016 --if the target has been converted into a development instance
21017
21018 IF (v_export_status <> model_publication_obselete) THEN
21019
21020 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21021 --it is possible that the obsoleting process changed value of the publication record.
21022 --so requery
21023 SELECT server_id, export_status, remote_publication_id, object_type
21024 INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
21025 FROM cz_model_publications
21026 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
21027 END IF;
21028
21029 IF (v_export_status = 'PUP')
21030 THEN
21031 RAISE cannot_del_pup;
21032 END IF;
21033
21034 ----check for reset cases
21035 BEGIN
21036 SELECT publication_id
21037 INTO l_reset_publication
21038 FROM cz_model_publications
21039 WHERE cz_model_publications.remote_publication_id = v_remote_publication_id
21040 AND cz_model_publications.server_id = v_server_id
21041 AND cz_model_publications.deleted_flag = record_not_deleted
21042 AND cz_model_publications.export_status = 'PUP';
21043 --SPUPPALA bug#7116052 7-AUG-2009.
21044 --AND cz_model_publications.publication_mode = l_pub_mode;
21045 EXCEPTION
21046 WHEN OTHERS
21047 THEN
21048 l_reset_publication := 0;
21049 END;
21050
21051 -- if publications are obsolete, their target should not be deleted
21052 IF ((v_server_id = 0) OR(v_export_status = model_publication_obselete))
21053 THEN
21054 v_cz_link_name := ' ';
21055 ELSE
21056 BEGIN
21057 SELECT fndnam_link_name
21058 INTO v_cz_link_name
21059 FROM cz_servers
21060 WHERE cz_servers.server_local_id = v_server_id;
21061 EXCEPTION
21062 WHEN OTHERS
21063 THEN
21064 v_cz_link_name := NULL;
21065 END;
21066
21067 IF (v_cz_link_name IS NULL)
21068 THEN
21069 RAISE no_link_name;
21070 END IF;
21071
21072 v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
21073 END IF;
21074
21075 IF (l_object_type = template_publication)
21076 THEN
21077 ----query to check if template is used
21078 l_tmp_publication := 1;
21079
21080 IF (l_tmp_publication = 1)
21081 THEN
21082 RAISE template_in_use;
21083 END IF;
21084 END IF;
21085
21086 UPDATE cz_model_publications
21087 SET deleted_flag = '1'
21088 WHERE publication_id = publicationid;
21089
21090 DELETE FROM cz_pb_client_apps
21091 WHERE publication_id = publicationid;
21092
21093 DELETE FROM cz_publication_usages
21094 WHERE publication_id = publicationid;
21095
21096 IF (l_reset_publication > 0)
21097 THEN
21098 UPDATE cz_model_publications
21099 SET export_status = 'OK'
21100 WHERE publication_id = l_reset_publication;
21101 END IF;
21102
21103 IF ((v_export_status <> 'PEN') AND(v_remote_publication_id IS NOT NULL))
21104 THEN
21105 EXECUTE IMMEDIATE 'BEGIN'
21106 || ' '
21107 || 'UPDATE cz_model_publications'
21108 || v_cz_link_name
21109 || ''
21110 || ' '
21111 || 'SET deleted_flag = ''1'''
21112 || ' '
21113 || 'WHERE publication_id = '
21114 || v_remote_publication_id
21115 || ';'
21116 || ' '
21117 || 'END;';
21118
21119 EXECUTE IMMEDIATE 'BEGIN'
21120 || ' '
21121 || 'DELETE FROM cz_pb_client_apps'
21122 || v_cz_link_name
21123 || ''
21124 || ' '
21125 || 'WHERE publication_id = '
21126 || v_remote_publication_id
21127 || ';'
21128 || ' '
21129 || 'END;';
21130
21131 EXECUTE IMMEDIATE 'BEGIN'
21132 || ' '
21133 || 'DELETE FROM cz_publication_usages'
21134 || v_cz_link_name
21135 || ''
21136 || ' '
21137 || 'WHERE publication_id = '
21138 || v_remote_publication_id
21139 || ';'
21140 || ' '
21141 || 'END;';
21142 END IF;
21143 EXCEPTION
21144 WHEN no_link_name
21145 THEN
21146 x_return_status := FND_API.G_RET_STS_ERROR;
21147 fnd_message.set_name('CZ', 'CZ_NO_LINK_NAME');
21148 fnd_msg_pub.ADD;
21149 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21150 WHEN cannot_del_pup
21151 THEN
21152 x_return_status := FND_API.G_RET_STS_ERROR;
21153 fnd_message.set_name('CZ', 'CZ_PB_CANNOT_DELETE_PUP');
21154 fnd_message.set_token('PUBID', publicationid);
21155 fnd_msg_pub.ADD;
21156 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21157 WHEN invalid_object_type
21158 THEN
21159 x_return_status := FND_API.G_RET_STS_ERROR;
21160 fnd_message.set_name('CZ', 'CZ_INVALID_PUB_TYPE');
21161 fnd_msg_pub.ADD;
21162 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21163 WHEN template_in_use
21164 THEN
21165 x_msg_data := cz_utils.get_text('CZ_TEMPLATE_IN_USE');
21166 x_return_status := FND_API.G_RET_STS_ERROR;
21167 fnd_message.set_name('CZ', 'CZ_TEMPLATE_IN_USE');
21168 fnd_msg_pub.ADD;
21169 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21170 WHEN OTHERS
21171 THEN
21172 x_return_status := FND_API.G_RET_STS_ERROR;
21173 x_msg_data := SQLERRM;
21174 END delete_publication;
21175
21176 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21177 ----------disable publication
21178 PROCEDURE disable_publication(
21179 publicationid IN NUMBER
21180 ,x_return_status OUT NOCOPY VARCHAR2
21181 ,x_msg_count OUT NOCOPY NUMBER
21182 ,x_msg_data OUT NOCOPY VARCHAR2
21183 )
21184 AS
21185 v_server_id cz_model_publications.server_id%TYPE;
21186 v_cz_link_name cz_servers.cz_link_name%TYPE;
21187 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21188 v_object_type cz_model_publications.object_type%TYPE;
21189 v_export_status cz_model_publications.export_status%TYPE;
21190 cannot_disable_template EXCEPTION;
21191 cannot_disable_publication EXCEPTION;
21192 BEGIN
21193 x_return_status := FND_API.G_RET_STS_SUCCESS;
21194 fnd_msg_pub.initialize;
21195 --execute the procedure that obsoletes the records
21196 --if the target has been converted into a development
21197 --instance
21198 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21199
21200 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21201 THEN
21202 RAISE pub_maybe_obsoleted;
21203 END IF;
21204
21205 SELECT object_type, server_id, remote_publication_id, export_status
21206 INTO v_object_type, v_server_id, v_remote_publication_id, v_export_status
21207 FROM cz_model_publications
21208 WHERE cz_model_publications.publication_id = publicationid;
21209
21210 BEGIN
21211 SELECT fndnam_link_name
21212 INTO v_cz_link_name
21213 FROM cz_servers
21214 WHERE cz_servers.server_local_id = v_server_id;
21215 EXCEPTION
21216 WHEN OTHERS
21217 THEN
21218 v_cz_link_name := NULL;
21219 END;
21220
21221 IF (v_export_status NOT IN('OK', 'PEN'))
21222 THEN
21223 RAISE cannot_disable_publication;
21224 END IF;
21225
21226 IF (v_object_type = template_publication)
21227 THEN
21228 RAISE cannot_disable_template;
21229 END IF;
21230
21231 IF (v_server_id = 0)
21232 THEN
21233 v_cz_link_name := '';
21234 ELSE
21235 v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
21236 END IF;
21237
21238 cz_pb_mgr.remote_publication_id := v_remote_publication_id;
21239
21240 UPDATE cz_model_publications
21241 SET disabled_flag = '1'
21242 WHERE publication_id = publicationid;
21243
21244 EXECUTE IMMEDIATE 'BEGIN'
21245 || ' '
21246 || 'UPDATE cz_model_publications'
21247 || v_cz_link_name
21248 || ''
21249 || ' '
21250 || 'SET disabled_flag = ''1'''
21251 || ' '
21252 || 'WHERE publication_id = cz_pb_mgr.remote_publication_id ;'
21253 || ' '
21254 || 'END;';
21255
21256 COMMIT;
21257 EXCEPTION
21258 WHEN cannot_disable_publication
21259 THEN
21260 ----x_msg_data := CZ_UTILS.GET_TEXT('CZ_CANT_DISABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationId);
21261 x_return_status := FND_API.G_RET_STS_ERROR;
21262 fnd_message.set_name('CZ', 'CZ_CANT_DISABLE_PUB');
21263 fnd_message.set_token('STATUS', v_export_status);
21264 fnd_message.set_token('PUBID', publicationid);
21265 fnd_msg_pub.ADD;
21266 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21267 WHEN pub_maybe_obsoleted
21268 THEN
21269 x_return_status := FND_API.G_RET_STS_ERROR;
21270 WHEN cannot_disable_template
21271 THEN
21272 x_msg_data := cz_utils.get_text('CZ_CANT_DISABLE_TEMPL', 'PUBID', publicationid);
21273 x_return_status := FND_API.G_RET_STS_ERROR;
21274 WHEN OTHERS
21275 THEN
21276 x_return_status := FND_API.G_RET_STS_ERROR;
21277 x_msg_data := SQLERRM;
21278 END disable_publication;
21279
21280 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21281 PROCEDURE get_edit_info(
21282 publicationid IN cz_model_publications.publication_id%TYPE
21283 ,x_product_key IN OUT NOCOPY cz_model_publications.product_key%TYPE
21284 ,x_publication_mode IN OUT NOCOPY VARCHAR2
21285 ,x_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
21286 ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
21287 ,x_source_target_flag IN OUT NOCOPY cz_model_publications.source_target_flag%TYPE
21288 ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.remote_publication_id%TYPE
21289 )
21290 AS
21291 BEGIN
21292 SELECT product_key, publication_mode, server_id, export_status, source_target_flag, remote_publication_id
21293 INTO x_product_key, x_publication_mode, x_server_id, x_export_status, x_source_target_flag, x_remote_publication_id
21294 FROM cz_model_publications
21295 WHERE cz_model_publications.publication_id = publicationid;
21296 EXCEPTION
21297 WHEN OTHERS
21298 THEN
21299 NULL;
21300 END;
21301
21302 -------->>>>>>>>>>>>>>
21303 PROCEDURE populate_app_tbl(p_application_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
21304 AS
21305 x NUMBER := 1;
21306 i NUMBER := 0;
21307 y NUMBER := 0;
21308 v_str VARCHAR2(200);
21309 BEGIN
21310 WHILE(x > 0)
21311 LOOP
21312 x := INSTR(p_application_id, ';');
21313
21314 IF (x = 0)
21315 THEN
21316 i := i + 1;
21317 x_app_tbl(i) := p_application_id;
21318 ELSE
21319 x := x - 1;
21320 v_str := SUBSTR(p_application_id, 1, x);
21321 i := i + 1;
21322 x_app_tbl(i) := v_str;
21323 y := LENGTH(p_application_id) -(x + 1);
21324 x := x + 2;
21325 p_application_id := SUBSTR(p_application_id, x, y);
21326 END IF;
21327 END LOOP;
21328 EXCEPTION
21329 WHEN OTHERS
21330 THEN
21331 RAISE;
21332 END;
21333
21334 ------->>>>>>>>>>>>>>>>>>>>>>>>
21335 PROCEDURE populate_lang_tbl(p_lang_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code)
21336 AS
21337 x NUMBER := 1;
21338 i NUMBER := 0;
21339 y NUMBER := 0;
21340 v_str VARCHAR2(200);
21341 BEGIN
21342 WHILE(x > 0)
21343 LOOP
21344 x := INSTR(p_lang_id, ';');
21345
21346 IF (x = 0)
21347 THEN
21348 i := i + 1;
21349 x_app_tbl(i) := p_lang_id;
21350 ELSE
21351 x := x - 1;
21352 v_str := SUBSTR(p_lang_id, 1, x);
21353 i := i + 1;
21354 x_app_tbl(i) := v_str;
21355 y := LENGTH(p_lang_id) -(x + 1);
21356 x := x + 2;
21357 p_lang_id := SUBSTR(p_lang_id, x, y);
21358 END IF;
21359 END LOOP;
21360 EXCEPTION
21361 WHEN OTHERS
21362 THEN
21363 RAISE;
21364 END;
21365
21366 -------->>>>>>>>>>>>>>>>>>
21367 PROCEDURE delete_src_pb_data(publicationid IN cz_model_publications.publication_id%TYPE)
21368 AS
21369 BEGIN
21370 DELETE FROM cz_publication_usages
21371 WHERE cz_publication_usages.publication_id = publicationid;
21372
21373 DELETE FROM cz_pb_client_apps
21374 WHERE cz_pb_client_apps.publication_id = publicationid;
21375
21376 DELETE FROM cz_pb_languages
21377 WHERE cz_pb_languages.publication_id = publicationid;
21378 EXCEPTION
21379 WHEN OTHERS
21380 THEN
21381 RAISE;
21382 END;
21383
21384 ------->>>>>>>>>>>>>>>>>>>>>>
21385 PROCEDURE insert_src_pb_data(
21386 publicationid IN cz_model_publications.publication_id%TYPE
21387 ,p_application_id_tbl IN cz_pb_mgr.t_ref
21388 ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
21389 ,p_usage_id_tbl IN cz_pb_mgr.t_ref
21390 ,x_status IN OUT NOCOPY VARCHAR2
21391 )
21392 AS
21393 v_application_short_name VARCHAR2(50);
21394 BEGIN
21395 FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
21396 LOOP
21397 SELECT application_short_name
21398 INTO v_application_short_name
21399 FROM fnd_application
21400 WHERE application_id = p_application_id_tbl(i);
21401
21402 INSERT INTO cz_pb_client_apps
21403 (publication_id, fnd_application_id, application_short_name, notes
21404 )
21405 VALUES (publicationid, p_application_id_tbl(i), v_application_short_name, NULL
21406 );
21407 END LOOP;
21408
21409 FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
21410 LOOP
21411 INSERT INTO cz_pb_languages
21412 (publication_id, LANGUAGE
21413 )
21414 VALUES (publicationid, p_language_id_tbl(i)
21415 );
21416 END LOOP;
21417
21418 FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
21419 LOOP
21420 INSERT INTO cz_publication_usages
21421 (publication_id, usage_id
21422 )
21423 VALUES (publicationid, p_usage_id_tbl(i)
21424 );
21425 END LOOP;
21426 EXCEPTION
21427 WHEN OTHERS
21428 THEN
21429 x_status := '-1';
21430 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EDIT_SRC_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21431 log_pb_errors(v_err_message, 1, 'cz_pb_mgr.EDITPB', SQLCODE);
21432 RAISE;
21433 END;
21434
21435 -------->>>>>>>>>>>>>>>>>>>>>
21436 PROCEDURE insert_tgt_pb_data(
21437 p_status_str IN OUT NOCOPY VARCHAR2
21438 ,p_export_status IN cz_model_publications.export_status%TYPE
21439 ,p_tgt_link IN cz_servers.fndnam_link_name%TYPE
21440 ,p_publication_mode IN VARCHAR2
21441 ,p_start_date IN DATE
21442 ,p_disable_date IN DATE
21443 ,p_remote_publication_id IN cz_model_publications.remote_publication_id%TYPE
21444 ,p_application_id_tbl IN cz_pb_mgr.t_ref
21445 ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
21446 ,p_usage_id_tbl IN cz_pb_mgr.t_ref
21447 )
21448 AS
21449 v_application_short_name VARCHAR2(50);
21450 v_edit_str VARCHAR2(2000);
21451 tgt_appl_id number;
21452 BEGIN
21453 IF ((p_status_str <> '-1') AND(p_export_status <> 'PEN'))
21454 THEN
21455 v_edit_str :=
21456 'UPDATE cz_model_publications'
21457 || p_tgt_link
21458 || ' '
21459 || 'SET publication_mode = :1,'
21460 || ' '
21461 || 'applicable_from = :2,'
21462 || ' '
21463 || 'applicable_until = :3'
21464 || ' '
21465 || 'WHERE publication_id = '
21466 || p_remote_publication_id;
21467
21468 EXECUTE IMMEDIATE v_edit_str
21469 USING p_publication_mode, p_start_date, p_disable_date;
21470
21471 v_edit_str :='DELETE FROM cz_publication_usages'||p_tgt_link||' ' ||
21472 'WHERE cz_publication_usages.publication_id = :1';
21473
21474 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
21475
21476
21477 v_edit_str := 'DELETE FROM cz_pb_client_apps'||p_tgt_link||' ' ||
21478 'WHERE cz_pb_client_apps.publication_id = :1';
21479
21480 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
21481
21482 v_edit_str := 'DELETE FROM cz_pb_languages'||p_tgt_link||' ' ||
21483 'WHERE cz_pb_languages.publication_id = :1';
21484
21485 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
21486
21487 IF (p_application_id_tbl.COUNT > 0) THEN
21488 FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
21489 LOOP
21490
21491 EXECUTE IMMEDIATE 'SELECT t.application_short_name,t.application_id'
21492 ||' FROM fnd_application s,fnd_application'||p_tgt_link
21493 ||' t WHERE s.application_id =:1 and '
21494 ||' s.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME'
21495 into v_application_short_name,tgt_appl_id using p_application_id_tbl(i);
21496
21497 v_edit_str :='INSERT INTO cz_pb_client_apps'||p_tgt_link||' (publication_id,fnd_application_id,application_short_name)'
21498 || ' ' || ' values (:1,:2,:3)';
21499
21500 EXECUTE IMMEDIATE v_edit_str USING p_remote_publication_id,tgt_appl_id,v_application_short_name;
21501
21502 END LOOP;
21503 END IF;
21504
21505 IF (p_language_id_tbl.COUNT > 0) THEN
21506 FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
21507 LOOP
21508 v_edit_str :='INSERT INTO cz_pb_languages'||p_tgt_link||' (publication_id,language)' || ' ' ||
21509 'values(:1,:2)';
21510 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_language_id_tbl(i);
21511
21512 END LOOP;
21513 END IF;
21514
21515 IF (p_usage_id_tbl.COUNT > 0) THEN
21516 FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
21517 LOOP
21518 v_edit_str :='INSERT INTO cz_publication_usages'||p_tgt_link||' (publication_id,usage_id)' || ' ' ||
21519 'VALUES(:1,:2)';
21520
21521 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_usage_id_tbl(i);
21522 END LOOP;
21523 END IF;
21524 END IF;
21525 EXCEPTION
21526 WHEN OTHERS
21527 THEN
21528 p_status_str := '-1';
21529 END;
21530
21531 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21532 ---------edit publication
21533 PROCEDURE edit_publication(
21534 publicationid IN NUMBER
21535 ,applicationid IN OUT NOCOPY VARCHAR2
21536 ,languageid IN OUT NOCOPY VARCHAR2
21537 ,usageid IN OUT NOCOPY VARCHAR2
21538 ,startdate IN DATE
21539 ,disabledate IN DATE
21540 ,publicationmode IN VARCHAR2
21541 ,x_return_status OUT NOCOPY VARCHAR2
21542 ,x_msg_count OUT NOCOPY NUMBER
21543 ,x_msg_data OUT NOCOPY VARCHAR2
21544 )
21545 AS
21546 v_product_key cz_model_publications.product_key%TYPE;
21547 v_publication_mode cz_model_publications.publication_mode%TYPE;
21548 v_server_id cz_model_publications.server_id%TYPE;
21549 v_source_target_flag cz_model_publications.source_target_flag%TYPE;
21550 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21551 v_export_status cz_model_publications.export_status%TYPE;
21552 v_count NUMBER;
21553 v_application_id VARCHAR2(2000);
21554 v_language_id VARCHAR2(2000);
21555 v_usage_id VARCHAR2(2000);
21556 v_tgt_link VARCHAR2(128);
21557 x NUMBER := 1;
21558 i NUMBER := 0;
21559 y NUMBER := 0;
21560 v_msg VARCHAR2(2000);
21561 status_str VARCHAR2(200) := '0';
21562 no_pub_found EXCEPTION;
21563 l_publication_id NUMBER;
21564 BEGIN
21565 x_return_status := FND_API.G_RET_STS_SUCCESS;
21566 fnd_msg_pub.initialize;
21567 v_application_id_tbl.DELETE;
21568 v_usage_id_tbl.DELETE;
21569 v_language_id_tbl.DELETE;
21570 --execute the procedure that obsoletes the records
21571 --if the target has been converted into a development
21572 --instance
21573 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21574
21575 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21576 THEN
21577 RAISE pub_maybe_obsoleted;
21578 END IF;
21579
21580 BEGIN
21581 SELECT publication_id
21582 INTO l_publication_id
21583 FROM cz_model_publications
21584 WHERE cz_model_publications.publication_id = publicationid;
21585 EXCEPTION
21586 WHEN NO_DATA_FOUND
21587 THEN
21588 RAISE no_pub_found;
21589 END;
21590
21591 SELECT COUNT(*)
21592 INTO v_count
21593 FROM cz_model_publications
21594 WHERE cz_model_publications.publication_id = publicationid
21595 AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR', model_publication_obselete);
21596
21597 IF (v_count = 0)
21598 THEN
21599 x_return_status := FND_API.G_RET_STS_ERROR;
21600 x_msg_count := 1;
21601 x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP/' || model_publication_obselete;
21602 ELSE
21603 get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
21604
21605 IF (v_server_id = 0)
21606 THEN
21607 v_tgt_link := '';
21608 ELSE
21609 v_tgt_link := retrieve_db_link(v_server_id);
21610 END IF;
21611
21612 UPDATE cz_model_publications
21613 SET publication_mode = publicationmode
21614 ,applicable_from = startdate
21615 ,applicable_until = disabledate
21616 WHERE publication_id = publicationid;
21617
21618 populate_app_tbl(applicationid, v_application_id_tbl);
21619 populate_app_tbl(usageid, v_usage_id_tbl);
21620 populate_lang_tbl(languageid, v_language_id_tbl);
21621 delete_src_pb_data(publicationid);
21622 insert_src_pb_data(publicationid, v_application_id_tbl, v_language_id_tbl, v_usage_id_tbl, status_str);
21623 insert_tgt_pb_data(status_str
21624 ,v_export_status
21625 ,v_tgt_link
21626 ,publicationmode
21627 ,startdate
21628 ,disabledate
21629 ,v_remote_publication_id
21630 ,v_application_id_tbl
21631 ,v_language_id_tbl
21632 ,v_usage_id_tbl
21633 );
21634
21635 IF (status_str = '-1')
21636 THEN
21637 x_return_status := FND_API.G_RET_STS_ERROR;
21638 x_msg_count := 1;
21639 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21640 ELSE
21641 COMMIT;
21642 END IF;
21643 END IF;
21644 EXCEPTION
21645 WHEN pub_maybe_obsoleted
21646 THEN
21647 x_return_status := FND_API.G_RET_STS_SUCCESS;
21648 WHEN no_pub_found
21649 THEN
21650 x_return_status := FND_API.G_RET_STS_SUCCESS;
21651 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21652 WHEN OTHERS
21653 THEN
21654 x_return_status := FND_API.G_RET_STS_ERROR;
21655 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21656 END edit_publication;
21657
21658 --------------------------------------------------------
21659 PROCEDURE edit_publication(
21660 publicationid IN NUMBER
21661 ,applicationid IN OUT NOCOPY cz_pb_mgr.t_ref
21662 ,languageid IN OUT NOCOPY cz_pb_mgr.t_lang_code
21663 ,usageid IN OUT NOCOPY cz_pb_mgr.t_ref
21664 ,startdate IN DATE
21665 ,disabledate IN DATE
21666 ,publicationmode IN VARCHAR2
21667 ,x_return_status OUT NOCOPY VARCHAR2
21668 ,x_msg_count OUT NOCOPY NUMBER
21669 ,x_msg_data OUT NOCOPY VARCHAR2
21670 )
21671 AS
21672 v_product_key cz_model_publications.product_key%TYPE;
21673 v_publication_mode cz_model_publications.publication_mode%TYPE;
21674 v_server_id cz_model_publications.server_id%TYPE;
21675 v_source_target_flag cz_model_publications.source_target_flag%TYPE;
21676 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21677 v_export_status cz_model_publications.export_status%TYPE;
21678 v_count NUMBER;
21679 v_application_id VARCHAR2(2000);
21680 v_language_id VARCHAR2(2000);
21681 v_usage_id VARCHAR2(2000);
21682 v_tgt_link VARCHAR2(128);
21683 x NUMBER := 1;
21684 i NUMBER := 0;
21685 y NUMBER := 0;
21686 v_msg VARCHAR2(2000);
21687 status_str VARCHAR2(200) := '0';
21688 no_pub_found EXCEPTION;
21689 l_publication_id NUMBER;
21690 BEGIN
21691 x_return_status := FND_API.G_RET_STS_SUCCESS;
21692 fnd_msg_pub.initialize;
21693 --execute the procedure that obsoletes the records
21694 --if the target has been converted into a development
21695 --instance
21696 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21697
21698 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21699 THEN
21700 RAISE pub_maybe_obsoleted;
21701 END IF;
21702
21703 BEGIN
21704 SELECT publication_id
21705 INTO l_publication_id
21706 FROM cz_model_publications
21707 WHERE cz_model_publications.publication_id = publicationid;
21708 EXCEPTION
21709 WHEN NO_DATA_FOUND
21710 THEN
21711 RAISE no_pub_found;
21712 END;
21713
21714 SELECT COUNT(*)
21715 INTO v_count
21716 FROM cz_model_publications
21717 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
21718
21719 IF (v_count = 0)
21720 THEN
21721 x_return_status := FND_API.G_RET_STS_ERROR;
21722 x_msg_count := 1;
21723 x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
21724 ELSE
21725 get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
21726
21727 IF (v_server_id = 0)
21728 THEN
21729 v_tgt_link := '';
21730 ELSE
21731 v_tgt_link := retrieve_db_link(v_server_id);
21732 END IF;
21733
21734 UPDATE cz_model_publications
21735 SET publication_mode = publicationmode
21736 ,applicable_from = startdate
21737 ,applicable_until = disabledate
21738 WHERE publication_id = publicationid;
21739
21740 delete_src_pb_data(publicationid);
21741 insert_src_pb_data(publicationid, applicationid, languageid, usageid, status_str);
21742 insert_tgt_pb_data(status_str
21743 ,v_export_status
21744 ,v_tgt_link
21745 ,publicationmode
21746 ,startdate
21747 ,disabledate
21748 ,v_remote_publication_id
21749 ,applicationid
21750 ,languageid
21751 ,usageid
21752 );
21753
21754 IF (status_str = '-1')
21755 THEN
21756 x_return_status := FND_API.G_RET_STS_ERROR;
21757 x_msg_count := 1;
21758 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21759 END IF;
21760 END IF;
21761 EXCEPTION
21762 WHEN pub_maybe_obsoleted
21763 THEN
21764 x_return_status := FND_API.G_RET_STS_SUCCESS;
21765 WHEN no_pub_found
21766 THEN
21767 x_return_status := FND_API.G_RET_STS_SUCCESS;
21768 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21769 WHEN OTHERS
21770 THEN
21771 x_return_status := FND_API.G_RET_STS_ERROR;
21772 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21773 END edit_publication;
21774
21775 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21776 ---------edit publication
21777 PROCEDURE edit_tgt_pub(
21778 publicationid IN NUMBER
21779 ,applicationid IN OUT NOCOPY VARCHAR2
21780 ,languageid IN OUT NOCOPY VARCHAR2
21781 ,usageid IN OUT NOCOPY VARCHAR2
21782 ,startdate IN DATE
21783 ,disabledate IN DATE
21784 ,publicationmode IN VARCHAR2
21785 ,x_return_status OUT NOCOPY VARCHAR2
21786 ,x_msg_count OUT NOCOPY NUMBER
21787 ,x_msg_data OUT NOCOPY VARCHAR2
21788 )
21789 AS
21790 v_product_key cz_model_publications.product_key%TYPE;
21791 v_publication_mode cz_model_publications.publication_mode%TYPE;
21792 v_server_id cz_model_publications.server_id%TYPE;
21793 v_source_target_flag cz_model_publications.source_target_flag%TYPE;
21794 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21795 v_export_status cz_model_publications.export_status%TYPE;
21796 v_count NUMBER;
21797 v_application_id VARCHAR2(2000);
21798 v_language_id VARCHAR2(2000);
21799 v_usage_id VARCHAR2(2000);
21800 v_tgt_link VARCHAR2(128);
21801 x NUMBER := 1;
21802 i NUMBER := 0;
21803 y NUMBER := 0;
21804 v_msg VARCHAR2(2000);
21805 status_str VARCHAR2(200) := '0';
21806 no_pub_found EXCEPTION;
21807 l_publication_id NUMBER;
21808 BEGIN
21809 x_return_status := FND_API.G_RET_STS_SUCCESS;
21810 fnd_msg_pub.initialize;
21811 v_application_id_tbl.DELETE;
21812 v_usage_id_tbl.DELETE;
21813 v_language_id_tbl.DELETE;
21814 --execute the procedure that obsoletes the records
21815 --if the target has been converted into a development
21816 --instance
21817 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21818
21819 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21820 THEN
21821 RAISE pub_maybe_obsoleted;
21822 END IF;
21823
21824 BEGIN
21825 SELECT publication_id
21826 INTO l_publication_id
21827 FROM cz_model_publications
21828 WHERE cz_model_publications.publication_id = publicationid;
21829 EXCEPTION
21830 WHEN NO_DATA_FOUND
21831 THEN
21832 RAISE no_pub_found;
21833 END;
21834
21835 SELECT COUNT(*)
21836 INTO v_count
21837 FROM cz_model_publications
21838 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
21839
21840 IF (v_count = 0)
21841 THEN
21842 x_return_status := FND_API.G_RET_STS_ERROR;
21843 x_msg_count := 1;
21844 x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
21845 ELSE
21846 get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
21847
21848 IF (v_server_id = 0)
21849 THEN
21850 v_tgt_link := '';
21851 ELSE
21852 v_tgt_link := retrieve_db_link(v_server_id);
21853 END IF;
21854
21855 -----UPDATE cz_model_publications
21856 -----SET publication_mode = publicationMode,
21857 -----applicable_from = startDate,
21858 -----applicable_until = disableDate
21859 -----WHERE publication_id = publicationId;
21860 populate_app_tbl(applicationid, v_application_id_tbl);
21861 populate_app_tbl(usageid, v_usage_id_tbl);
21862 populate_lang_tbl(languageid, v_language_id_tbl);
21863 -----delete_src_pb_data(publicationId);
21864 -----insert_src_pb_data(publicationId,
21865 ----v_application_id_tbl,
21866 ----v_language_id_tbl,
21867 ----v_usage_id_tbl,
21868 ----status_str);
21869 insert_tgt_pb_data(status_str
21870 ,v_export_status
21871 ,v_tgt_link
21872 ,publicationmode
21873 ,startdate
21874 ,disabledate
21875 ,v_remote_publication_id
21876 ,v_application_id_tbl
21877 ,v_language_id_tbl
21878 ,v_usage_id_tbl
21879 );
21880
21881 IF (status_str = '-1')
21882 THEN
21883 x_return_status := FND_API.G_RET_STS_ERROR;
21884 x_msg_count := 1;
21885 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21886 END IF;
21887 END IF;
21888 EXCEPTION
21889 WHEN pub_maybe_obsoleted
21890 THEN
21891 x_return_status := FND_API.G_RET_STS_SUCCESS;
21892 WHEN no_pub_found
21893 THEN
21894 x_return_status := FND_API.G_RET_STS_SUCCESS;
21895 WHEN OTHERS
21896 THEN
21897 x_return_status := FND_API.G_RET_STS_ERROR;
21898 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
21899 END edit_tgt_pub;
21900
21901 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21902 PROCEDURE chk_pub_overlap_internal(
21903 productkey IN VARCHAR2
21904 ,publicationmode IN VARCHAR2
21905 ,applicationid_tbl IN cz_pb_mgr.t_ref
21906 ,languageid_tbl IN cz_pb_mgr.t_lang_code
21907 ,usageid_tbl IN cz_pb_mgr.t_ref
21908 ,serverid IN NUMBER
21909 ,startdate IN DATE
21910 ,disabledate IN DATE
21911 ,sourcetargetflag IN VARCHAR2 ---DEFAULT 'S'
21912 ,pubrecid IN NUMBER
21913 ,publicationidstring IN OUT NOCOPY VARCHAR2
21914 )
21915 AS
21916 x NUMBER := 1;
21917 i NUMBER := 0;
21918 y NUMBER := 0;
21919 k NUMBER := 0;
21920 v_pb_count NUMBER := 1;
21921 publicationid NUMBER;
21922 v_appl_id NUMBER;
21923 v_lang_id VARCHAR2(4);
21924 v_usg_id NUMBER;
21925 v_pub_tbl cz_pb_mgr.t_ref;
21926 v_ret_pb cz_pb_mgr.t_ref;
21927 l_str VARCHAR2(2000);
21928
21929 -- jonatara:bug6375826
21930 -- these temporary tables are introduced to handle the request from CZ_MODELOPERATIONS_PUB.create_publication_request
21931 t_languageId_tbl CZ_PB_MGR.t_lang_code;
21932 t_usageId_tbl CZ_PB_MGR.t_ref;
21933
21934 BEGIN
21935 -- jonatara:bug6375826
21936 -- setting default value to usage_id table and language table if they are NULL
21937
21938 -- setting default usage value as 'Any Usage'
21939 IF usageId_tbl.COUNT = 0 THEN
21940 t_usageId_tbl(0) := -1;
21941 ELSE
21942 t_usageId_tbl := usageId_tbl;
21943 END IF;
21944
21945 -- setting default language value as'US'
21946 IF languageId_tbl.COUNT = 0 THEN
21947 t_languageId_tbl(0) := 'US';
21948 ELSE
21949 t_languageId_tbl := languageId_tbl;
21950 END IF;
21951
21952 publicationid := -1;
21953
21954 IF (applicationid_tbl.COUNT > 0) THEN
21955 FOR i IN applicationid_tbl.FIRST .. applicationid_tbl.LAST
21956 LOOP
21957 v_appl_id := applicationid_tbl(i);
21958 -- jonatara:bug6375826
21959 IF (t_usageid_tbl.COUNT > 0) THEN
21960 FOR j IN t_usageid_tbl.FIRST .. t_usageid_tbl.LAST
21961 LOOP
21962 v_usg_id := t_usageid_tbl(j);
21963 IF (t_languageid_tbl.COUNT > 0) THEN
21964 FOR k IN t_languageid_tbl.FIRST .. t_languageid_tbl.LAST
21965 LOOP
21966 v_lang_id := t_languageid_tbl(k);
21967
21968 IF ((v_appl_id IS NOT NULL) AND(v_usg_id IS NOT NULL) AND(v_lang_id IS NOT NULL))
21969 THEN
21970 BEGIN
21971 l_str :=
21972 'productKey : '
21973 || productkey
21974 || 'mode : '
21975 || publicationmode
21976 || 'serverId: '
21977 || serverid
21978 || '
21979 appl_id: '
21980 || v_appl_id
21981 || ' usage '
21982 || v_usg_id
21983 || 'langid: '
21984 || v_lang_id
21985 || '
21986 startdate : '
21987 || TO_CHAR(startdate, 'mm-dd-yyyy')
21988 || ' disableDate : '
21989 || TO_CHAR(disabledate, 'mm-dd-yyyy');
21990
21991 SELECT DISTINCT publication_id
21992 INTO publicationid
21993 FROM cz_model_applicabilities_v
21994 WHERE product_key = LTRIM(RTRIM(productkey))
21995 AND UPPER(publication_mode) = LTRIM(RTRIM(UPPER(publicationmode)))
21996 AND server_id = serverid
21997 AND fnd_application_id = v_appl_id
21998 AND usage_id = v_usg_id
21999 AND LANGUAGE = v_lang_id
22000 AND deleted_flag = '0'
22001 AND UPPER(source_target_flag) = LTRIM(RTRIM(UPPER(sourcetargetflag)))
22002 AND publication_id <> pubrecid
22003 AND ( ( (start_date >= startdate)
22004 AND (startdate IS NOT NULL)
22005 AND (disabledate IS NOT NULL)
22006 AND (start_date < disabledate)
22007 )
22008 OR ( (disable_date > startdate)
22009 AND (startdate IS NOT NULL)
22010 AND (disabledate IS NOT NULL)
22011 AND (disable_date <= disabledate)
22012 )
22013 OR ( (start_date <= startdate)
22014 AND (startdate IS NOT NULL)
22015 AND (disabledate IS NOT NULL)
22016 AND (disable_date >= disabledate)
22017 )
22018 OR ((start_date <= startdate) AND(startdate < disable_date) AND(disabledate IS NULL))
22019 OR ((disable_date >= disabledate) AND(disabledate > start_date) AND(startdate IS NULL))
22020 );
22021 EXCEPTION
22022 WHEN NO_DATA_FOUND
22023 THEN
22024 publicationid := -1;
22025 WHEN OTHERS
22026 THEN
22027 publicationid := -666;
22028 END;
22029
22030 IF publicationid > 0
22031 THEN
22032 v_pub_tbl(v_pb_count) := publicationid;
22033 v_pb_count := v_pb_count + 1;
22034 END IF;
22035 END IF;
22036 END LOOP;
22037 END IF;
22038 END LOOP;
22039 END IF;
22040 END LOOP;
22041 END IF;
22042
22043 v_ret_pb.DELETE;
22044
22045 IF v_pub_tbl.COUNT > 0
22046 THEN
22047 FOR i IN v_pub_tbl.FIRST .. v_pub_tbl.LAST
22048 LOOP
22049 publicationid := v_pub_tbl(i);
22050
22051 IF (v_ret_pb.COUNT = 0)
22052 THEN
22053 x := 1;
22054 v_ret_pb(x) := publicationid;
22055 ELSE
22056 k := 0;
22057
22058 FOR j IN v_ret_pb.FIRST .. v_ret_pb.LAST
22059 LOOP
22060 IF (v_ret_pb(j) = publicationid)
22061 THEN
22062 k := k + 1;
22063 END IF;
22064 END LOOP;
22065
22066 IF k = 0
22067 THEN
22068 y := v_ret_pb.COUNT + 1;
22069 v_ret_pb(y) := publicationid;
22070 END IF;
22071 END IF;
22072 END LOOP;
22073
22074 IF v_ret_pb.COUNT > 0
22075 THEN
22076 FOR m IN v_ret_pb.FIRST .. v_ret_pb.LAST
22077 LOOP
22078 IF publicationidstring IS NULL
22079 THEN
22080 publicationidstring := TO_CHAR(v_ret_pb(m));
22081 ELSE
22082 publicationidstring := publicationidstring || ';' || TO_CHAR(v_ret_pb(m));
22083 END IF;
22084 END LOOP;
22085 END IF;
22086 ELSIF(publicationid = -666)
22087 THEN
22088 publicationidstring := 'Fatal Error: More than one overlapping publications found';
22089 ELSE
22090 publicationidstring := TO_CHAR(-1);
22091 END IF;
22092 EXCEPTION
22093 WHEN OTHERS
22094 THEN
22095 RAISE;
22096 END chk_pub_overlap_internal;
22097
22098 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
22099 ------wrapper for check overlap publication - procedure (to be call from the VB)
22100 PROCEDURE check_publication_overlap(
22101 productkey IN VARCHAR2
22102 ,publicationmode IN VARCHAR2
22103 ,applicationid IN VARCHAR2
22104 ,languageid IN VARCHAR2
22105 ,usageid IN VARCHAR2
22106 ,serverid IN NUMBER
22107 ,startdate IN DATE
22108 ,disabledate IN DATE
22109 ,sourcetargetflag IN VARCHAR2
22110 ,pubrecid IN NUMBER
22111 ,publicationidstring OUT NOCOPY VARCHAR2
22112 )
22113 AS
22114 v_app_id_tbl cz_pb_mgr.t_ref;
22115 v_usg_id_tbl cz_pb_mgr.t_ref;
22116 v_lang_id_tbl cz_pb_mgr.t_lang_code;
22117 v_in_appl_id VARCHAR2(2000);
22118 v_in_lang_id VARCHAR2(2000);
22119 v_in_usg_id VARCHAR2(2000);
22120 l_publicationidstring VARCHAR2(2000);
22121 BEGIN
22122 fnd_msg_pub.initialize;
22123 v_in_appl_id := applicationid;
22124 v_in_lang_id := languageid;
22125 v_in_usg_id := usageid;
22126 populate_app_tbl(v_in_appl_id, v_app_id_tbl);
22127 populate_app_tbl(v_in_usg_id, v_usg_id_tbl);
22128 populate_lang_tbl(v_in_lang_id, v_lang_id_tbl);
22129 chk_pub_overlap_internal(productkey
22130 ,publicationmode
22131 ,v_app_id_tbl
22132 ,v_lang_id_tbl
22133 ,v_usg_id_tbl
22134 ,serverid
22135 ,startdate
22136 ,disabledate
22137 ,sourcetargetflag
22138 ,pubrecid
22139 ,l_publicationidstring
22140 );
22141 publicationidstring := l_publicationidstring;
22142 EXCEPTION
22143 WHEN OTHERS
22144 THEN
22145 RAISE;
22146 END check_publication_overlap;
22147
22148 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22149 PROCEDURE reset_processing_pubs
22150 IS
22151 v_link_name cz_servers.fndnam_link_name%TYPE;
22152 v_db_link VARCHAR2(255);
22153 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
22154 BEGIN
22155 fnd_msg_pub.initialize;
22156
22157 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
22158 THEN
22159 l_pub_mode := cz_model_migration_pvt.mode_migration;
22160 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
22161 THEN
22162 l_pub_mode := cz_model_migration_pvt.mode_copy;
22163 END IF;
22164
22165 FOR i IN (SELECT publication_id, remote_publication_id, server_id
22166 FROM cz_model_publications
22167 WHERE UPPER(export_status) = publication_processing AND deleted_flag = '0')
22168 LOOP
22169 BEGIN
22170 SELECT fndnam_link_name
22171 INTO v_link_name
22172 FROM cz_servers
22173 WHERE server_local_id = i.server_id;
22174
22175 v_db_link := '';
22176
22177 IF v_link_name IS NOT NULL
22178 THEN
22179 v_db_link := '@' || v_link_name;
22180 END IF;
22181
22182 --
22183 -- mark remote publication as deleted
22184 --
22185 EXECUTE IMMEDIATE 'UPDATE CZ_MODEL_PUBLICATIONS' || v_db_link || ' SET deleted_flag=:1' || ' WHERE publication_id = :2'
22186 USING '1', i.remote_publication_id;
22187 EXCEPTION
22188 WHEN NO_DATA_FOUND
22189 THEN
22190 NULL;
22191 WHEN OTHERS
22192 THEN
22193 NULL;
22194 END;
22195 END LOOP;
22196
22197 DELETE FROM cz_pb_model_exports
22198 WHERE publication_id IN(SELECT publication_id
22199 FROM cz_model_publications
22200 WHERE UPPER(export_status) = publication_processing);
22201
22202 UPDATE cz_model_publications
22203 SET export_status = publication_pending
22204 WHERE UPPER(export_status) = publication_processing;
22205
22206 COMMIT;
22207 END;
22208
22209 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22210 -----procedure that validates input dates for republish
22211 PROCEDURE validate_pb_dates(p_start_date IN OUT NOCOPY DATE, p_end_date IN OUT NOCOPY DATE, x_status IN OUT NOCOPY VARCHAR2)
22212 AS
22213 BEGIN
22214 IF (p_start_date > p_end_date)
22215 THEN
22216 x_status := PUBLICATION_ERROR;
22217 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_VALIDATE_DATES', 'STARTDATE', TO_CHAR(p_start_date), 'ENDDATE', TO_CHAR(p_end_date));
22218 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22219 END IF;
22220 EXCEPTION
22221 WHEN OTHERS
22222 THEN
22223 x_status := PUBLICATION_ERROR;
22224 cz_pb_mgr.v_err_message := 'Error during input start and end dates comparison: ' || SQLERRM;
22225 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22226 END validate_pb_dates;
22227
22228 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22229 ------procedure that gets applicability parameters for the
22230 ------publication to be republished
22231 PROCEDURE get_pb_parameters(
22232 p_publication_id IN cz_model_publications.publication_id%TYPE
22233 ,x_applicationid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
22234 ,x_usageid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
22235 ,x_languageid_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code
22236 ,x_status IN OUT NOCOPY VARCHAR2
22237 )
22238 AS
22239 BEGIN
22240 SELECT fnd_application_id
22241 BULK COLLECT INTO x_applicationid_tbl
22242 FROM cz_pb_client_apps
22243 WHERE publication_id = p_publication_id;
22244
22245 SELECT usage_id
22246 BULK COLLECT INTO x_usageid_tbl
22247 FROM cz_publication_usages
22248 WHERE publication_id = p_publication_id;
22249
22250 SELECT LANGUAGE
22251 BULK COLLECT INTO x_languageid_tbl
22252 FROM cz_pb_languages
22253 WHERE publication_id = p_publication_id;
22254
22255 IF ((x_applicationid_tbl.COUNT = 0) OR(x_usageid_tbl.COUNT = 0) OR(x_languageid_tbl.COUNT = 0))
22256 THEN
22257 x_status := PUBLICATION_ERROR;
22258 cz_pb_mgr.v_err_message := 'Republish terminated: all applicability parameters are not found for publication: ' || TO_CHAR(p_publication_id);
22259 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22260 END IF;
22261 EXCEPTION
22262 WHEN OTHERS
22263 THEN
22264 x_status := PUBLICATION_ERROR;
22265 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_PARAM_ERROR', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22266 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22267 END get_pb_parameters;
22268
22269 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22270 ------procedure that creates a new publication request
22271 ------for republish
22272 PROCEDURE create_republish_request(
22273 p_publication_id IN cz_model_publications.publication_id%TYPE
22274 ,p_start_date IN DATE
22275 ,p_end_date IN DATE
22276 ,x_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
22277 ,p_repub_str IN VARCHAR2
22278 ,x_status IN OUT NOCOPY VARCHAR2
22279 )
22280 AS
22281 v_new_publication_id cz_model_publications.publication_id%TYPE;
22282 v_old_publication_id cz_model_publications.publication_id%TYPE;
22283 BEGIN
22284 x_status := 'OK';
22285
22286 SELECT cz_model_publications_s.NEXTVAL, p_publication_id
22287 INTO v_new_publication_id, v_old_publication_id
22288 FROM DUAL;
22289
22290 INSERT INTO cz_model_publications
22291 (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22292 ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
22293 ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
22294 ,model_persistent_id, source_target_flag, remote_publication_id, disabled_flag, object_id, object_type)
22295 SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22296 ,p_start_date, p_end_date, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01, user_str02
22297 ,user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
22298 ,remote_publication_id, disabled_flag, object_id, object_type
22299 FROM cz_model_publications
22300 WHERE publication_id = p_publication_id;
22301
22302 v_repub_parameter := pub_model;
22303 insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_status);
22304
22305 IF (p_repub_str = new_copy_str)
22306 THEN
22307 UPDATE cz_model_publications
22308 SET remote_publication_id = NULL
22309 WHERE publication_id = v_new_publication_id;
22310 ELSIF(p_repub_str = repub_str)
22311 THEN
22312 UPDATE cz_model_publications
22313 SET export_status = 'PUP'
22314 WHERE publication_id = p_publication_id;
22315 END IF;
22316
22317 x_new_publication_id := v_new_publication_id;
22318 COMMIT;
22319 EXCEPTION
22320 WHEN OTHERS
22321 THEN
22322 x_status := PUBLICATION_ERROR;
22323 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_CREATE_REQUEST_ERROR', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22324 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22325 END create_republish_request;
22326
22327 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22328 PROCEDURE create_republish_publication(
22329 p_publication_id IN NUMBER
22330 ,x_new_publication_id OUT NOCOPY NUMBER
22331 ,x_return_status OUT NOCOPY VARCHAR2
22332 ,x_msg_count OUT NOCOPY NUMBER
22333 ,x_msg_data OUT NOCOPY VARCHAR2
22334 )
22335 AS
22336 v_new_publication_id cz_model_publications.publication_id%TYPE;
22337 v_old_publication_id cz_model_publications.publication_id%TYPE;
22338 v_source_pb_record cz_model_publications%ROWTYPE;
22339 l_application_id_tbl cz_pb_mgr.t_ref;
22340 l_language_id_tbl cz_pb_mgr.t_lang_code;
22341 l_usage_id_tbl cz_pb_mgr.t_ref;
22342 l_param_status VARCHAR2(2000);
22343 v_upto_date_status VARCHAR2(2000);
22344 v_publicationidstring VARCHAR2(2000);
22345 l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
22346 l_deleted_flag VARCHAR2(1);
22347 l_ui_name cz_ui_defs.NAME%TYPE;
22348 expstatus_exception EXCEPTION;
22349 get_params_exception EXCEPTION;
22350 model_not_upto_date EXCEPTION;
22351 pub_overlap EXCEPTION;
22352 ui_def_id_is_deleted EXCEPTION;
22353 BEGIN
22354 x_return_status := FND_API.G_RET_STS_SUCCESS;
22355 fnd_msg_pub.initialize;
22356 --execute the procedure that obsoletes the records
22357 --if the target has been converted into a development
22358 --instance
22359 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
22360
22361 ----check status
22362 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
22363 THEN
22364 RAISE pub_maybe_obsoleted;
22365 END IF;
22366
22367 ----get source pb info
22368 SELECT *
22369 INTO v_source_pb_record
22370 FROM cz_model_publications
22371 WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = cz_model_migration_pvt.pub_source_flag;
22372
22373 ----check status
22374 IF (v_source_pb_record.export_status <> 'OK')
22375 THEN
22376 RAISE expstatus_exception;
22377 END IF;
22378
22379 ----get applicability parameters
22380 get_pb_parameters(p_publication_id, l_application_id_tbl, l_usage_id_tbl, l_language_id_tbl, l_param_status);
22381
22382 IF (l_param_status = PUBLICATION_ERROR)
22383 THEN
22384 RAISE get_params_exception;
22385 END IF;
22386
22387 ----check if UI exists
22388 IF (v_source_pb_record.ui_def_id IS NOT NULL)
22389 THEN
22390 BEGIN
22391 SELECT ui_def_id, deleted_flag, NAME
22392 INTO l_ui_def_id, l_deleted_flag, l_ui_name
22393 FROM cz_ui_defs
22394 WHERE cz_ui_defs.ui_def_id = v_source_pb_record.ui_def_id;
22395 EXCEPTION
22396 WHEN NO_DATA_FOUND
22397 THEN
22398 RAISE ui_def_id_is_deleted;
22399 END;
22400
22401 IF (l_deleted_flag = '1')
22402 THEN
22403 RAISE ui_def_id_is_deleted;
22404 END IF;
22405 END IF;
22406
22407 ----check model upto date
22408 model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
22409
22410 IF (v_upto_date_status <> '0')
22411 THEN
22412 RAISE model_not_upto_date;
22413 END IF;
22414
22415 ----check publication overlap
22416 chk_pub_overlap_internal(v_source_pb_record.product_key
22417 ,v_source_pb_record.publication_mode
22418 ,l_application_id_tbl
22419 ,l_language_id_tbl
22420 ,l_usage_id_tbl
22421 ,v_source_pb_record.server_id
22422 ,v_source_pb_record.applicable_from
22423 ,v_source_pb_record.applicable_until
22424 ,v_source_pb_record.source_target_flag
22425 ,v_source_pb_record.publication_id
22426 ,v_publicationidstring
22427 );
22428
22429 IF (v_publicationidstring <> '-1')
22430 THEN
22431 RAISE pub_overlap;
22432 END IF;
22433
22434 SELECT cz_model_publications_s.NEXTVAL, p_publication_id
22435 INTO v_new_publication_id, v_old_publication_id
22436 FROM DUAL;
22437
22438 INSERT INTO cz_model_publications
22439 (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22440 ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
22441 ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
22442 ,model_persistent_id, source_target_flag, remote_publication_id, object_id, object_type, disabled_flag)
22443 SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
22444 ,applicable_from, applicable_until, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01
22445 ,user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
22446 ,remote_publication_id, object_id, object_type, disabled_flag
22447 FROM cz_model_publications
22448 WHERE publication_id = p_publication_id;
22449
22450 v_repub_parameter := pub_model;
22451 insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_return_status);
22452
22453 UPDATE cz_model_publications
22454 SET export_status = 'PUP'
22455 WHERE publication_id = p_publication_id;
22456
22457 x_new_publication_id := v_new_publication_id;
22458 COMMIT;
22459 EXCEPTION
22460 WHEN pub_overlap
22461 THEN
22462 ROLLBACK;
22463 x_return_status := FND_API.G_RET_STS_ERROR;
22464 fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
22465 fnd_message.set_token('PUBID', p_publication_id);
22466 fnd_message.set_token('PUBSTR', v_publicationidstring);
22467 fnd_msg_pub.ADD;
22468 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22469 WHEN ui_def_id_is_deleted
22470 THEN
22471 x_return_status := FND_API.G_RET_STS_ERROR;
22472
22473 IF (l_ui_name IS NOT NULL)
22474 THEN
22475 fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
22476 fnd_message.set_token('UIDEFID', l_ui_name);
22477 fnd_msg_pub.ADD;
22478 ELSE
22479 fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
22480 fnd_message.set_token('UIDEFID', v_source_pb_record.ui_def_id);
22481 fnd_msg_pub.ADD;
22482 END IF;
22483
22484 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22485 WHEN model_not_upto_date
22486 THEN
22487 ROLLBACK;
22488 x_return_status := FND_API.G_RET_STS_ERROR;
22489 fnd_message.set_name('CZ', 'CZ_REPUB_MODEL_NOT_UP_TO_DATE');
22490 fnd_message.set_token('PUBID', p_publication_id);
22491 fnd_message.set_token('MODELUPTODATE', v_upto_date_status);
22492 fnd_msg_pub.ADD;
22493 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22494 WHEN get_params_exception
22495 THEN
22496 ROLLBACK;
22497 x_return_status := FND_API.G_RET_STS_ERROR;
22498 fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
22499 fnd_message.set_token('PUBID', p_publication_id);
22500 fnd_msg_pub.ADD;
22501 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22502 WHEN expstatus_exception
22503 THEN
22504 ROLLBACK;
22505 x_return_status := FND_API.G_RET_STS_ERROR;
22506 fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERR');
22507 fnd_message.set_token('PUBID', p_publication_id);
22508 fnd_message.set_token('EXPORT STATUS', v_source_pb_record.export_status);
22509 fnd_msg_pub.ADD;
22510 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22511 cz_pb_mgr.v_republish_model := no_mode;
22512 WHEN pub_maybe_obsoleted
22513 THEN
22514 x_return_status := fnd_api.g_ret_sts_unexp_error;
22515 WHEN OTHERS
22516 THEN
22517 ROLLBACK;
22518 x_return_status := fnd_api.g_ret_sts_unexp_error;
22519 fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERROR');
22520 fnd_message.set_token('PUBID', p_publication_id);
22521 fnd_message.set_token('SQLERRM', SQLERRM);
22522 fnd_msg_pub.ADD;
22523 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22524 END create_republish_publication;
22525
22526 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
22527 ------procedure that resets the start and end dates
22528 ------of the original publication
22529 PROCEDURE reset_pb_dates(
22530 p_publicationid IN cz_model_publications.publication_id%TYPE
22531 ,x_applicable_from IN OUT NOCOPY DATE
22532 ,x_applicable_until IN OUT NOCOPY DATE
22533 ,x_orig_start_date IN OUT NOCOPY DATE
22534 ,x_orig_end_date IN OUT NOCOPY DATE
22535 ,x_start_date IN OUT NOCOPY DATE
22536 ,x_end_date IN OUT NOCOPY DATE
22537 ,x_reset_str IN OUT NOCOPY VARCHAR2
22538 ,x_status IN OUT NOCOPY VARCHAR2
22539 )
22540 AS
22541 v_db_link cz_servers.fndnam_link_name%TYPE;
22542 v_server_id cz_model_publications.server_id%TYPE;
22543 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
22544 reset_date_error EXCEPTION;
22545 BEGIN
22546 SELECT applicable_from, applicable_until, server_id, remote_publication_id
22547 INTO v_repub_appl_from, v_repub_appl_until, v_server_id, v_remote_publication_id
22548 FROM cz_model_publications
22549 WHERE publication_id = p_publicationid;
22550
22551 x_orig_start_date := v_repub_appl_from;
22552 x_orig_end_date := v_repub_appl_until;
22553
22554 IF ((x_start_date = v_repub_appl_from) AND(x_end_date = v_repub_appl_until))
22555 THEN
22556 x_reset_str := repub_str;
22557 ELSIF( ((x_start_date > v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
22558 OR ((x_start_date < v_repub_appl_from) AND(x_end_date < v_repub_appl_from))
22559 )
22560 THEN
22561 x_reset_str := new_copy_str;
22562 ELSIF((x_start_date > v_repub_appl_from) AND(x_start_date < v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
22563 THEN
22564 v_repub_appl_until := x_start_date;
22565 v_repub_appl_until := x_start_date;
22566 x_reset_str := new_copy_str;
22567 cz_pb_mgr.v_republish_model := new_copy_mode;
22568 ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date > v_repub_appl_until))
22569 THEN
22570 x_reset_str := repub_str;
22571 ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date < v_repub_appl_until))
22572 THEN
22573 v_repub_appl_from := x_end_date;
22574 x_reset_str := new_copy_str;
22575 cz_pb_mgr.v_republish_model := new_copy_mode;
22576 ELSIF( (x_start_date < v_repub_appl_from)
22577 AND (x_start_date < v_repub_appl_until)
22578 AND (x_end_date > v_repub_appl_from)
22579 AND (x_end_date < v_repub_appl_until)
22580 )
22581 THEN
22582 v_repub_appl_from := x_end_date;
22583 x_reset_str := new_copy_str;
22584 cz_pb_mgr.v_republish_model := new_copy_mode;
22585 ELSIF( (x_start_date < v_repub_appl_from)
22586 AND (x_start_date < v_repub_appl_until)
22587 AND (x_end_date > v_repub_appl_from)
22588 AND (x_end_date > v_repub_appl_until)
22589 )
22590 THEN
22591 x_reset_str := repub_str;
22592 v_repub_appl_from := x_start_date;
22593 v_repub_appl_until := x_end_date;
22594 ELSIF( (x_start_date > v_repub_appl_from)
22595 AND (x_start_date < v_repub_appl_until)
22596 AND (x_end_date > v_repub_appl_from)
22597 AND (x_end_date < v_repub_appl_until)
22598 )
22599 THEN
22600 v_repub_appl_from := x_start_date;
22601 v_repub_appl_until := x_end_date;
22602 x_reset_str := repub_str;
22603 ELSE
22604 RAISE reset_date_error;
22605 END IF;
22606
22607 UPDATE cz_model_publications
22608 SET applicable_from = v_repub_appl_from
22609 ,applicable_until = v_repub_appl_until
22610 WHERE publication_id = p_publicationid;
22611
22612 x_applicable_from := v_repub_appl_from;
22613 x_applicable_until := v_repub_appl_until;
22614 COMMIT;
22615 EXCEPTION
22616 WHEN reset_date_error
22617 THEN
22618 x_status := PUBLICATION_ERROR;
22619 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PUBID', p_publicationid, 'SQLERRM', SQLERRM);
22620 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22621 WHEN OTHERS
22622 THEN
22623 x_status := PUBLICATION_ERROR;
22624 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PUBID', p_publicationid, 'SQLERRM', SQLERRM);
22625 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22626 END reset_pb_dates;
22627
22628 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22629 PROCEDURE reset_repub_changes(
22630 p_publication_id IN cz_model_publications.publication_id%TYPE
22631 ,p_orig_start_date IN DATE
22632 ,p_orig_end_date IN DATE
22633 ,x_reset_status IN OUT NOCOPY VARCHAR2
22634 )
22635 AS
22636 BEGIN
22637 UPDATE cz_model_publications
22638 SET cz_model_publications.applicable_from = p_orig_start_date
22639 ,cz_model_publications.applicable_until = p_orig_end_date
22640 ,cz_model_publications.deleted_flag = '0'
22641 ,cz_model_publications.export_status = 'OK'
22642 WHERE cz_model_publications.publication_id = p_publication_id;
22643
22644 COMMIT;
22645 EXCEPTION
22646 WHEN OTHERS
22647 THEN
22648 x_reset_status := PUBLICATION_ERROR;
22649 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_PB_CHANGES', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22650 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22651 END reset_repub_changes;
22652
22653 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
22654 ------procedure that republishes a model
22655 PROCEDURE republish_model(
22656 p_publication_id IN OUT NOCOPY NUMBER
22657 ,p_start_date IN OUT NOCOPY DATE
22658 ,p_end_date IN OUT NOCOPY DATE
22659 ,x_run_id OUT NOCOPY NUMBER
22660 ,x_status OUT NOCOPY cz_model_publications.export_status%TYPE
22661 )
22662 AS
22663 v_upto_date_status VARCHAR2(2000);
22664 v_source_pb_record cz_model_publications%ROWTYPE;
22665 v_new_publication_id cz_model_publications.publication_id%TYPE;
22666 v_publicationidstring VARCHAR2(2000);
22667 v_reset_str VARCHAR2(100);
22668 v_reset_status VARCHAR2(2000);
22669 v_repub_status VARCHAR2(2000);
22670 v_param_status VARCHAR2(2000);
22671 v_publication_status VARCHAR2(3);
22672 v_create_status VARCHAR2(3);
22673 common_exception EXCEPTION;
22674 BEGIN
22675 initialize_pb_parameters(p_publication_id);
22676 ----initialize global republish parameter to be used in publish model
22677 cz_pb_mgr.v_republish_model := no_mode;
22678 x_status := 'OK';
22679 v_repub_appl_from := NULL;
22680 v_repub_appl_until := NULL;
22681 v_repub_remote_pb_id := 0;
22682
22683 ---get run id
22684 SELECT cz_xfr_run_infos_s.NEXTVAL
22685 INTO cz_pb_mgr.v_pb_run_id
22686 FROM DUAL;
22687
22688 x_run_id := cz_pb_mgr.v_pb_run_id;
22689
22690 ----get source pb info
22691 SELECT *
22692 INTO v_source_pb_record
22693 FROM cz_model_publications
22694 WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = g_source_flag;
22695
22696 ----capture original values
22697 v_repub_remote_pb_id := v_source_pb_record.remote_publication_id;
22698 v_orig_start_date := v_source_pb_record.applicable_from;
22699 v_orig_end_date := v_source_pb_record.applicable_until;
22700 ----check status
22701 check_export_status(v_source_pb_record.export_status, cz_republish, x_status);
22702
22703 IF (x_status = PUBLICATION_ERROR)
22704 THEN
22705 RAISE common_exception;
22706 END IF;
22707
22708 ----get applicability parameters
22709 get_pb_parameters(p_publication_id, v_application_id_tbl, v_usage_id_tbl, v_language_id_tbl, v_param_status);
22710
22711 IF (v_param_status = PUBLICATION_ERROR)
22712 THEN
22713 RAISE common_exception;
22714 END IF;
22715
22716 ----validate input start and end dates
22717 IF (p_start_date IS NULL)
22718 THEN
22719 p_start_date := v_source_pb_record.applicable_from;
22720 END IF;
22721
22722 IF (p_end_date IS NULL)
22723 THEN
22724 p_end_date := v_source_pb_record.applicable_until;
22725 END IF;
22726
22727 validate_pb_dates(p_start_date, p_end_date, x_status);
22728
22729 IF (x_status = PUBLICATION_ERROR)
22730 THEN
22731 RAISE common_exception;
22732 END IF;
22733
22734 ----check model upto date
22735 model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
22736
22737 IF (v_upto_date_status <> '0')
22738 THEN
22739 cz_pb_mgr.v_err_message := v_upto_date_status;
22740 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22741 RAISE common_exception;
22742 END IF;
22743
22744 ---reset pb dates
22745 reset_pb_dates(p_publication_id
22746 ,v_repub_appl_from
22747 ,v_repub_appl_until
22748 ,v_orig_start_date
22749 ,v_orig_end_date
22750 ,p_start_date
22751 ,p_end_date
22752 ,v_reset_str
22753 ,v_reset_status
22754 );
22755
22756 IF (v_reset_status = PUBLICATION_ERROR)
22757 THEN
22758 RAISE common_exception;
22759 END IF;
22760
22761 ----check publication overlap
22762 chk_pub_overlap_internal(v_source_pb_record.product_key
22763 ,v_source_pb_record.publication_mode
22764 ,v_application_id_tbl
22765 ,v_language_id_tbl
22766 ,v_usage_id_tbl
22767 ,v_source_pb_record.server_id
22768 ,p_start_date
22769 ,p_end_date
22770 ,v_source_pb_record.source_target_flag
22771 ,v_source_pb_record.publication_id
22772 ,v_publicationidstring
22773 );
22774
22775 IF (v_publicationidstring <> '-1')
22776 THEN
22777 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_OVERLAP', 'PUBID', p_publication_id, 'PUBSTR', v_publicationidstring);
22778 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22779 RAISE common_exception;
22780 ELSE
22781 ----create new publication request
22782 create_republish_request(p_publication_id, p_start_date, p_end_date, v_new_publication_id, v_reset_str, v_create_status);
22783
22784 IF (v_create_status = PUBLICATION_ERROR)
22785 THEN
22786 RAISE common_exception;
22787 END IF;
22788
22789 -----publish model
22790 publish_model(v_new_publication_id, x_run_id, v_publication_status);
22791 END IF;
22792
22793 IF (v_publication_status = PUBLICATION_ERROR)
22794 THEN
22795 reset_repub_changes(p_publication_id, v_orig_start_date, v_orig_end_date, v_repub_status);
22796 RAISE common_exception;
22797 ELSE
22798 cz_pb_mgr.v_msg_tbl.DELETE;
22799 cz_pb_mgr.v_pb_run_id := x_run_id;
22800 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_SUCCESS', 'PUBID', p_publication_id);
22801 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUB_MODEL', SQLCODE);
22802 log_pb_trace;
22803 END IF;
22804
22805 x_status := v_publication_status;
22806 cz_pb_mgr.v_republish_model := no_mode;
22807 EXCEPTION
22808 WHEN common_exception
22809 THEN
22810 ROLLBACK;
22811 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PUBID', p_publication_id);
22812 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22813 x_status := PUBLICATION_ERROR;
22814 log_pb_trace;
22815 cz_pb_mgr.v_republish_model := no_mode;
22816 WHEN OTHERS
22817 THEN
22818 x_status := PUBLICATION_ERROR;
22819 cz_pb_mgr.v_republish_model := no_mode;
22820 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PUBID', p_publication_id, 'SQLERRM', SQLERRM);
22821 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
22822 log_pb_trace;
22823 END republish_model;
22824
22825 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
22826 ----------enable publication
22827 PROCEDURE enable_publication(
22828 publicationid IN NUMBER
22829 ,x_return_status OUT NOCOPY VARCHAR2
22830 ,x_msg_count OUT NOCOPY NUMBER
22831 ,x_msg_data OUT NOCOPY VARCHAR2
22832 )
22833 AS
22834 v_server_id cz_model_publications.server_id%TYPE;
22835 v_cz_link_name cz_servers.cz_link_name%TYPE;
22836 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
22837 v_app_id_tbl cz_pb_mgr.t_ref;
22838 v_usg_id_tbl cz_pb_mgr.t_ref;
22839 v_lang_id_tbl cz_pb_mgr.t_lang_code;
22840 v_object_type cz_model_publications.object_type%TYPE;
22841 l_status VARCHAR2(3);
22842 l_product_key cz_model_publications.product_key%TYPE;
22843 l_applicable_from cz_model_publications.applicable_from%TYPE;
22844 l_applicable_until cz_model_publications.applicable_until%TYPE;
22845 l_source_target_flag cz_model_publications.source_target_flag%TYPE;
22846 l_publication_mode cz_model_publications.publication_mode%TYPE;
22847 v_export_status cz_model_publications.export_status%TYPE;
22848 l_publicationidstring VARCHAR2(2000);
22849 cannot_enable_template EXCEPTION;
22850 get_params_exception EXCEPTION;
22851 pub_overlap EXCEPTION;
22852 cannot_enable_publication EXCEPTION;
22853 BEGIN
22854 x_return_status := FND_API.G_RET_STS_SUCCESS;
22855 fnd_msg_pub.initialize;
22856 --execute the procedure that obsoletes the records
22857 --if the target has been converted into a development
22858 --instance
22859 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
22860
22861 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
22862 THEN
22863 RAISE pub_maybe_obsoleted;
22864 END IF;
22865
22866 BEGIN
22867 SELECT export_status
22868 INTO v_export_status
22869 FROM cz_model_publications
22870 WHERE cz_model_publications.publication_id = publicationid;
22871 EXCEPTION
22872 WHEN OTHERS
22873 THEN
22874 v_export_status := NULL;
22875 END;
22876
22877 IF (v_export_status = model_publication_obselete)
22878 THEN
22879 RAISE cannot_enable_template;
22880 END IF;
22881
22882 SELECT object_type, server_id, remote_publication_id, product_key, applicable_from, applicable_until, source_target_flag
22883 ,publication_mode, v_export_status
22884 INTO v_object_type, v_server_id, v_remote_publication_id, l_product_key, l_applicable_from, l_applicable_until, l_source_target_flag
22885 ,l_publication_mode, v_export_status
22886 FROM cz_model_publications
22887 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.disabled_flag = '1';
22888
22889 BEGIN
22890 SELECT fndnam_link_name
22891 INTO v_cz_link_name
22892 FROM cz_servers
22893 WHERE cz_servers.server_local_id = v_server_id;
22894 EXCEPTION
22895 WHEN OTHERS
22896 THEN
22897 v_cz_link_name := NULL;
22898 END;
22899
22900 IF (v_object_type = template_publication)
22901 THEN
22902 RAISE cannot_enable_template;
22903 END IF;
22904
22905 IF (v_export_status NOT IN('OK', 'PEN'))
22906 THEN
22907 RAISE cannot_enable_publication;
22908 END IF;
22909
22910 get_pb_parameters(publicationid, v_app_id_tbl, v_usg_id_tbl, v_lang_id_tbl, l_status);
22911
22912 IF (l_status = PUBLICATION_ERROR)
22913 THEN
22914 RAISE get_params_exception;
22915 END IF;
22916
22917 chk_pub_overlap_internal(l_product_key
22918 ,l_publication_mode
22919 ,v_app_id_tbl
22920 ,v_lang_id_tbl
22921 ,v_usg_id_tbl
22922 ,v_server_id
22923 ,l_applicable_from
22924 ,l_applicable_until
22925 ,l_source_target_flag
22926 ,publicationid
22927 ,l_publicationidstring
22928 );
22929
22930 IF (l_publicationidstring <> '-1')
22931 THEN
22932 RAISE pub_overlap;
22933 END IF;
22934
22935 IF (v_server_id = 0)
22936 THEN
22937 v_cz_link_name := '';
22938 ELSE
22939 v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
22940 END IF;
22941
22942 UPDATE cz_model_publications
22943 SET disabled_flag = '0'
22944 WHERE publication_id = publicationid;
22945
22946 cz_pb_mgr.remote_publication_id := v_remote_publication_id;
22947
22948 EXECUTE IMMEDIATE 'BEGIN'
22949 || ' '
22950 || 'UPDATE cz_model_publications'
22951 || v_cz_link_name
22952 || ' '
22953 || 'SET disabled_flag = ''0'''
22954 || ' '
22955 || 'WHERE publication_id = cz_pb_mgr.remote_publication_id ;'
22956 || ' '
22957 || 'END;';
22958
22959 COMMIT;
22960 EXCEPTION
22961 WHEN NO_DATA_FOUND
22962 THEN
22963 NULL;
22964 WHEN cannot_enable_publication
22965 THEN
22966 x_return_status := FND_API.G_RET_STS_ERROR;
22967 x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationid);
22968 fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_PUB');
22969 fnd_message.set_token('STATUS', v_export_status);
22970 fnd_message.set_token('PUBID', publicationid);
22971 fnd_msg_pub.ADD;
22972 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22973 WHEN cannot_enable_template
22974 THEN
22975 x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_TEMPL', 'PUBID', publicationid);
22976 x_return_status := FND_API.G_RET_STS_ERROR;
22977 fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_TEMPL');
22978 fnd_message.set_token('PUBID', publicationid);
22979 fnd_msg_pub.ADD;
22980 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22981 WHEN get_params_exception
22982 THEN
22983 ROLLBACK;
22984 x_return_status := FND_API.G_RET_STS_ERROR;
22985 fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
22986 fnd_message.set_token('PUBID', publicationid);
22987 fnd_msg_pub.ADD;
22988 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22989 WHEN pub_overlap
22990 THEN
22991 ROLLBACK;
22992 x_return_status := FND_API.G_RET_STS_ERROR;
22993 fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
22994 fnd_message.set_token('PUBID', publicationid);
22995 fnd_message.set_token('PUBSTR', l_publicationidstring);
22996 fnd_msg_pub.ADD;
22997 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22998 WHEN pub_maybe_obsoleted
22999 THEN
23000 x_return_status := FND_API.G_RET_STS_ERROR;
23001 WHEN OTHERS
23002 THEN
23003 x_return_status := FND_API.G_RET_STS_ERROR;
23004 x_msg_data := SQLERRM;
23005 END enable_publication;
23006
23007 ---------------------------------
23008 --------function that returns the name of a project that is passed in as
23009 --------a parameter. IF the name already exists, then the string "Copy of ()"
23010 --------is appended before the original name
23011 --------this function is used in deep_model_copy
23012 --------
23013 FUNCTION copy_name(p_devl_project_id IN NUMBER)
23014 RETURN VARCHAR2
23015
23016 AS
23017
23018 original_name cz_devl_projects.name%TYPE;
23019 copy_name cz_devl_projects.name%TYPE;
23020 L PLS_INTEGER := 0;
23021 x_error BOOLEAN := FALSE;
23022
23023 BEGIN
23024 BEGIN
23025 SELECT name
23026 INTO original_name
23027 FROM cz_rp_entries
23028 WHERE object_id = p_devl_project_id
23029 AND object_type = 'PRJ'
23030 AND deleted_flag = '0';
23031 EXCEPTION
23032 WHEN NO_DATA_FOUND THEN
23033 original_name := NULL;
23034 WHEN OTHERS THEN
23035 original_name := NULL;
23036 END;
23037
23038 IF (original_name IS NOT NULL) THEN
23039
23040 BEGIN
23041
23042 SELECT nvl(max(to_number(substr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),7,instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),')',7)-7))),0)
23043 INTO L
23044 FROM cz_rp_entries
23045 WHERE name LIKE 'Copy (%) of '||original_name
23046 and instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),'Copy (',7)=0
23047 and is_val_number(substr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),7,instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),')',7)-7))='TRUE'
23048 AND deleted_flag = '0' and object_type='PRJ';
23049
23050 -- L := to_number(substr(copy_name,7,instr(copy_name,')',7)-7));
23051
23052 EXCEPTION
23053 WHEN NO_DATA_FOUND THEN
23054 L := 0;
23055 END;
23056 END IF;
23057
23058 L := L + 1;
23059 copy_name := 'Copy ('||to_char(L)||') of '||original_name;
23060 RETURN copy_name ;
23061 EXCEPTION
23062 WHEN OTHERS THEN
23063 -- x_error:= CZ_UTILS.REPORT(SQLERRM,1,'CZ_UTILS.COPY_NAME',-222);
23064 log_report('cz_utils', 'copy_name', 1, SQLERRM, fnd_log.LEVEL_UNEXPECTED);
23065 copy_name := 'ERROR';
23066 RETURN copy_name ;
23067 END copy_name;
23068
23069 ----------------------------------------------------------------------------------
23070 PROCEDURE create_publication_request(
23071 p_model_id IN NUMBER
23072 ,p_ui_def_id IN NUMBER
23073 ,p_publication_mode IN VARCHAR2
23074 ,p_server_id IN NUMBER
23075 ,p_appl_id_tbl IN cz_pb_mgr.t_ref
23076 ,p_usg_id_tbl IN cz_pb_mgr.t_ref
23077 ,p_lang_tbl IN cz_pb_mgr.t_lang_code
23078 ,p_start_date IN DATE
23079 ,p_end_date IN DATE
23080 ,x_publication_id OUT NOCOPY NUMBER
23081 ,x_return_status OUT NOCOPY VARCHAR2
23082 ,x_msg_count OUT NOCOPY NUMBER
23083 ,x_msg_data OUT NOCOPY VARCHAR2
23084 )
23085 IS
23086 l_model_id cz_rp_entries.object_id%TYPE;
23087 l_publication_mode cz_model_publications.publication_mode%TYPE;
23088 l_usg_id cz_publication_usages.usage_id%TYPE;
23089 l_lang_code cz_pb_languages.LANGUAGE%TYPE;
23090 l_start_date DATE;
23091 l_end_date DATE;
23092 l_last_struct_update DATE;
23093 l_last_logic_update DATE;
23094 l_last_updated DATE;
23095 l_persistent_project_id cz_devl_projects.persistent_project_id%TYPE;
23096 v_publicationidstring VARCHAR2(2000);
23097 v_upto_date_status VARCHAR2(2000);
23098 l_ui_style cz_ui_defs.ui_style%TYPE;
23099 v_new_publication_id cz_model_publications.publication_id%TYPE;
23100 l_inventory_item_id cz_devl_projects.inventory_item_id%TYPE;
23101 l_organization_id cz_devl_projects.organization_id%TYPE;
23102 l_product_key cz_devl_projects.product_key%TYPE;
23103 l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
23104 l_short_name cz_pb_client_apps.application_short_name%TYPE;
23105 pub_overlap EXCEPTION;
23106 no_model_id EXCEPTION;
23107 no_model_exists EXCEPTION;
23108 no_ui_exists EXCEPTION;
23109 invalid_pb_mode EXCEPTION;
23110 no_appl_id EXCEPTION;
23111 model_not_upto_date EXCEPTION;
23112 no_ui_id EXCEPTION;
23113 product_key_is_null EXCEPTION;
23114 PUB_SOURCE_FLAG CONSTANT VARCHAR2(1) := 'S';
23115 BEGIN
23116 x_return_status := FND_API.G_RET_STS_SUCCESS;
23117 fnd_msg_pub.initialize;
23118
23119 -----check if model id passed in is not null
23120 -----if not null then check if the model exists and is
23121 -----a source model
23122 IF (p_model_id IS NULL)
23123 THEN
23124 RAISE no_model_id;
23125 ELSE
23126 BEGIN
23127 SELECT devl_project_id, product_key, inventory_item_id, organization_id, last_struct_update, last_logic_update, last_update_date
23128 ,persistent_project_id
23129 INTO l_model_id, l_product_key, l_inventory_item_id, l_organization_id, l_last_struct_update, l_last_logic_update, l_last_updated
23130 ,l_persistent_project_id
23131 FROM cz_devl_projects
23132 WHERE cz_devl_projects.devl_project_id = p_model_id
23133 AND cz_devl_projects.deleted_flag = '0'
23134 AND cz_devl_projects.devl_project_id IN(SELECT object_id
23135 FROM cz_rp_entries
23136 WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0');
23137 EXCEPTION
23138 WHEN NO_DATA_FOUND
23139 THEN
23140 RAISE no_model_exists;
23141 END;
23142 END IF;
23143
23144 IF (l_product_key IS NULL)
23145 THEN
23146 RAISE product_key_is_null;
23147 END IF;
23148
23149 -----verify that the ui_def_id passed in is valid
23150 -----If a ui_def is passed in verify that it belongs to the
23151 ----- model that is being published.
23152 IF (p_ui_def_id < 0)
23153 THEN
23154 RAISE no_ui_id;
23155 ELSIF(p_ui_def_id IS NULL)
23156 THEN
23157 l_ui_def_id := NULL;
23158 l_ui_style := NULL;
23159 ELSE
23160 BEGIN
23161 SELECT ui_def_id, ui_style
23162 INTO l_ui_def_id, l_ui_style
23163 FROM cz_ui_defs
23164 WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.devl_project_id = p_model_id AND cz_ui_defs.deleted_flag = '0';
23165 EXCEPTION
23166 WHEN NO_DATA_FOUND
23167 THEN
23168 RAISE no_ui_exists;
23169 END;
23170 END IF;
23171
23172 ----verify that the publication mode that is passed in
23173 ---- is a valid one. If NULL is passed then
23174 ----- default the mode to 'P'
23175 l_publication_mode := p_publication_mode;
23176
23177 IF (l_publication_mode IS NULL)
23178 THEN
23179 l_publication_mode := 'P';
23180 ELSIF(UPPER(l_publication_mode) NOT IN('P', 'T', cz_model_migration_pvt.mode_migration))
23181 THEN
23182 RAISE invalid_pb_mode;
23183 END IF;
23184
23185 IF (UPPER(l_publication_mode) = cz_model_migration_pvt.mode_migration)
23186 THEN
23187 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
23188 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
23189 ELSE
23190 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
23191 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
23192 END IF;
23193
23194 ----check that atleast one application id
23195 ----- is passed
23196 IF (p_appl_id_tbl.COUNT = 0)
23197 THEN
23198 RAISE no_appl_id;
23199 END IF;
23200
23201 ----if no usage is passed the default to
23202 ---- any usage
23203 IF (p_usg_id_tbl.COUNT = 0)
23204 THEN
23205 l_usg_id := -1;
23206 END IF;
23207
23208 ----- if no language is passed then default to
23209 ------AMERICAN ENGLISH
23210 IF (p_lang_tbl.COUNT = 0)
23211 THEN
23212 l_lang_code := 'US';
23213 END IF;
23214
23215 -----if no start or end dates
23216 ---- are passed, then default to epoch begin and epoch end respectively
23217 IF (p_start_date IS NULL)
23218 THEN
23219 l_start_date := cz_utils.epoch_begin;
23220 ELSE
23221 l_start_date := p_start_date;
23222 END IF;
23223
23224 IF (p_end_date IS NULL)
23225 THEN
23226 l_end_date := cz_utils.epoch_end;
23227 ELSE
23228 l_end_date := p_end_date;
23229 END IF;
23230
23231 ----check model upto date
23232 cz_pb_mgr.model_upto_date(p_model_id, p_ui_def_id, v_upto_date_status);
23233
23234 IF (v_upto_date_status <> '0')
23235 THEN
23236 RAISE model_not_upto_date;
23237 END IF;
23238
23239 ----check for publication overlap
23240 chk_pub_overlap_internal(l_product_key
23241 ,l_publication_mode
23242 ,p_appl_id_tbl
23243 ,p_lang_tbl
23244 ,p_usg_id_tbl
23245 ,p_server_id
23246 ,l_start_date
23247 ,l_end_date
23248 ,PUB_SOURCE_FLAG
23249 ,1
23250 ,v_publicationidstring
23251 );
23252
23253 IF (v_publicationidstring <> '-1')
23254 THEN
23255 RAISE pub_overlap;
23256 END IF;
23257
23258 SELECT cz_model_publications_s.NEXTVAL
23259 INTO v_new_publication_id
23260 FROM DUAL;
23261
23262 INSERT INTO cz_model_publications
23263 (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode
23264 ,ui_def_id, ui_style, applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update
23265 ,model_last_logic_update, model_last_updated, model_persistent_id, source_target_flag, remote_publication_id, object_id
23266 ,object_type, disabled_flag
23267 )
23268 VALUES (v_new_publication_id, p_model_id, p_server_id, l_organization_id, l_inventory_item_id, l_product_key, l_publication_mode
23269 ,p_ui_def_id, l_ui_style, l_start_date, l_end_date, 'PEN', '0', l_last_struct_update
23270 ,l_last_logic_update, l_last_updated, l_persistent_project_id, PUB_SOURCE_FLAG, NULL, p_model_id
23271 ,'PRJ', '0'
23272 );
23273
23274 IF (p_appl_id_tbl.COUNT > 0)
23275 THEN
23276 FOR i IN p_appl_id_tbl.FIRST .. p_appl_id_tbl.LAST
23277 LOOP
23278 l_short_name := ' ';
23279
23280 SELECT application_short_name
23281 INTO l_short_name
23282 FROM fnd_application
23283 WHERE application_id = p_appl_id_tbl(i);
23284
23285 INSERT INTO cz_pb_client_apps
23286 (publication_id, fnd_application_id, application_short_name
23287 )
23288 VALUES (v_new_publication_id, p_appl_id_tbl(i), l_short_name
23289 );
23290 ---- short name must be retrieved from fnd_applications_tl
23291 END LOOP;
23292 END IF;
23293
23294 IF (p_usg_id_tbl.COUNT > 0)
23295 THEN
23296 FOR i IN p_usg_id_tbl.FIRST .. p_usg_id_tbl.LAST
23297 LOOP
23298 INSERT INTO cz_publication_usages
23299 (publication_id, usage_id
23300 )
23301 VALUES (v_new_publication_id, p_usg_id_tbl(i)
23302 );
23303 END LOOP;
23304 ELSE
23305 INSERT INTO cz_publication_usages
23306 (publication_id, usage_id
23307 )
23308 VALUES (v_new_publication_id, l_usg_id
23309 );
23310 END IF;
23311
23312 IF (p_lang_tbl.COUNT > 0)
23313 THEN
23314 FOR i IN p_lang_tbl.FIRST .. p_lang_tbl.LAST
23315 LOOP
23316 INSERT INTO cz_pb_languages
23317 (publication_id, LANGUAGE
23318 )
23319 VALUES (v_new_publication_id, p_lang_tbl(i)
23320 );
23321 END LOOP;
23322 ELSE
23323 INSERT INTO cz_pb_languages
23324 (publication_id, LANGUAGE
23325 )
23326 VALUES (v_new_publication_id, l_lang_code
23327 );
23328 END IF;
23329
23330 x_publication_id := v_new_publication_id;
23331 EXCEPTION
23332 WHEN product_key_is_null
23333 THEN
23334 x_return_status := FND_API.G_RET_STS_ERROR;
23335 fnd_message.set_name('CZ', 'CZ_PRODUCT_KEY_IS_NULL');
23336 fnd_msg_pub.ADD;
23337 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23338 WHEN no_model_id
23339 THEN
23340 x_return_status := FND_API.G_RET_STS_ERROR;
23341 fnd_message.set_name('CZ', 'cz_pb_mgr_MODEL_ID_NULL');
23342 fnd_msg_pub.ADD;
23343 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23344 WHEN no_model_exists
23345 THEN
23346 x_return_status := FND_API.G_RET_STS_ERROR;
23347 fnd_message.set_name('CZ', 'cz_pb_mgr_NO_MODEL_EXISTS');
23348 fnd_message.set_token('MODELID', p_model_id);
23349 fnd_msg_pub.ADD;
23350 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23351 WHEN no_ui_exists
23352 THEN
23353 x_return_status := FND_API.G_RET_STS_ERROR;
23354 fnd_message.set_name('CZ', 'cz_pb_mgr_NO_UI_EXISTS');
23355 fnd_message.set_token('MODELID', p_model_id);
23356 fnd_msg_pub.ADD;
23357 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23358 WHEN invalid_pb_mode
23359 THEN
23360 x_return_status := FND_API.G_RET_STS_ERROR;
23361 fnd_message.set_name('CZ', 'cz_pb_mgr_IVALID_PB_MODE');
23362 fnd_message.set_token('PBMODE', l_publication_mode);
23363 fnd_msg_pub.ADD;
23364 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23365 WHEN no_appl_id
23366 THEN
23367 x_return_status := FND_API.G_RET_STS_ERROR;
23368 fnd_message.set_name('CZ', 'cz_pb_mgr_NO_APPL_ID');
23369 fnd_msg_pub.ADD;
23370 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23371 WHEN pub_overlap
23372 THEN
23373 x_return_status := FND_API.G_RET_STS_ERROR;
23374 fnd_message.set_name('CZ', 'PUB_OVERLAP');
23375 fnd_message.set_token('PUB_OVERLAP', v_publicationidstring);
23376 fnd_msg_pub.ADD;
23377 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23378 WHEN model_not_upto_date
23379 THEN
23380 x_return_status := FND_API.G_RET_STS_ERROR;
23381 fnd_message.set_name('CZ', 'CZ_PB_MODEL_NOT_UPTO_DATE');
23382 fnd_message.set_token('UPTODATESTR', v_upto_date_status);
23383 fnd_msg_pub.ADD;
23384 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23385 WHEN OTHERS
23386 THEN
23387 x_return_status := FND_API.G_RET_STS_ERROR;
23388 fnd_message.set_name('CZ', 'CZ_PB_CREATE_PB_REQUEST_ERR');
23389 fnd_message.set_token('ERROR', SQLERRM);
23390 fnd_msg_pub.ADD;
23391 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
23392 END create_publication_request;
23393
23394 ------------------------------------------------------------------------------------------------
23395 --Need to go through get_models_tobe_exported because it makes the decisions on shallow
23396 --migration.
23397 PROCEDURE mm_get_models_tobe_exported(rootmodelid_tbl IN cz_pb_mgr.t_ref)
23398 AS
23399 BEGIN
23400 IF (rootmodelid_tbl.COUNT > 0) THEN
23401 FOR i IN rootmodelid_tbl.FIRST .. rootmodelid_tbl.LAST
23402 LOOP
23403 get_models_tobe_exported(rootmodelid_tbl(i));
23404 END LOOP;
23405 END IF;
23406 END;
23407
23408 ------------------------------------------------------------------------------------------------
23409 FUNCTION mm_chkifmodelselectedforexport(input_model NUMBER)
23410 RETURN NUMBER
23411 AS
23412 return_value NUMBER := 0;
23413 BEGIN
23414 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
23415 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
23416 LOOP
23417 IF (cz_pb_mgr.v_models_to_be_exported(i) = input_model)
23418 THEN
23419 return_value := 1;
23420 EXIT;
23421 END IF;
23422 END LOOP;
23423 END IF;
23424
23425 RETURN return_value;
23426 END mm_chkifmodelselectedforexport;
23427
23428 ------------------------------------------------------------------------------------------------
23429 --The current design for model migration will run
23430 --the publication process for every model that has been selected
23431 --to be migrated. The process of collecting the models is in
23432 --CZ_MODEL_MIGRATION_PVT. Once the models are collected there, for every
23433 --CZ_MODEL_PUBLICATIONS record, publish model is called. Given that,
23434 --this procedure gets the model for the current migration cz_model_publication
23435 --record.
23436
23437 FUNCTION get_rootmodel_and_mig_tgt_fldr(p_publication_id NUMBER)
23438 RETURN t_ref
23439 AS
23440 mm_root_model t_ref;
23441 BEGIN
23442
23443 --we load the global variable
23444 --holding the value of migration target folder
23445 SELECT migration_group_id, migration_tgt_folder
23446 INTO cz_pb_mgr.g_migration_group_id, cz_pb_mgr.g_migration_tgt_folder_id
23447 FROM cz_model_publications
23448 WHERE publication_id = p_publication_id;
23449
23450 --get the model corresponding to this publication
23451 SELECT object_id
23452 BULK COLLECT INTO mm_root_model
23453 FROM cz_model_publications
23454 WHERE publication_id = p_publication_id;
23455
23456 RETURN mm_root_model;
23457 END get_rootmodel_and_mig_tgt_fldr;
23458
23459 ------------------------------------------------------------------------------------------------
23460 PROCEDURE mm_loadoldpsnodesforitems
23461 AS
23462 v_project_count PLS_INTEGER;
23463 rec_count PLS_INTEGER;
23464 l_ps_uits_add_tbl date_tbl_type; -- cz_ps_nodes.UI_TIMESTAMP_ADD
23465 l_reverse_connector_tbl t_ref;
23466 BEGIN
23467 clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
23468 cz_pb_mgr.sequence_const := 0;
23469
23470 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
23471 THEN
23472 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
23473 LOOP
23474 BEGIN
23475 clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
23476 l_ps_uits_add_tbl.DELETE;
23477 l_reverse_connector_tbl.DELETE;
23478
23479 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ps_nodes_seq
23480 , 'cz_ps_nodes_s.NEXTVAL' || cz_pb_mgr.v_db_link
23481 ,cz_pb_mgr.v_oraclesequenceincr
23482 )
23483 ,ps_node_id, parent_id, reference_id, effectivity_set_id
23484 ,intl_text_id, violation_text_id, displayname_capt_rule_id, component_id
23485 ,effective_usage_mask, item_id, ps_node_type
23486 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_origsysref(orig_sys_ref), 'N', orig_sys_ref)
23487 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqpath(component_sequence_path), 'N', component_sequence_path)
23488 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqid(component_sequence_id), 'N', component_sequence_id)
23489 ,NVL(ui_timestamp_add, creation_date), reverse_connector_id, src_application_id
23490 BULK COLLECT INTO cz_pb_mgr.v_cz_ps_nodes_new_ref
23491 ,cz_pb_mgr.v_cz_ps_nodes_old_ref, cz_pb_mgr.v_ps_parent_id_ref, cz_pb_mgr.v_ps_ref_id_ref, cz_pb_mgr.v_ps_eff_set_id_ref
23492 ,cz_pb_mgr.v_ps_intl_old_ref, cz_pb_mgr.v_ps_viol_old_ref, cz_pb_mgr.v_ps_capt_rule_ref, cz_pb_mgr.v_cz_ps_nodes_comp_ref
23493 ,cz_pb_mgr.v_cz_effective_usage_mask_ref, cz_pb_mgr.v_ps_item_id_ref, cz_pb_mgr.v_ps_type_old_ref
23494 ,cz_pb_mgr.v_ps_orig_sys_ref
23495 ,cz_pb_mgr.v_ps_comp_seq_path_ref
23496 ,cz_pb_mgr.v_ps_comp_seq_id_ref
23497 ,l_ps_uits_add_tbl, l_reverse_connector_tbl
23498 ,cz_pb_mgr.v_ps_src_appl_id_old_ref
23499 FROM cz_ps_nodes
23500 WHERE cz_ps_nodes.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND deleted_flag = record_not_deleted;
23501 EXCEPTION
23502 WHEN OTHERS
23503 THEN
23504 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
23505 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
23506 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23507 RAISE;
23508 END;
23509
23510 v_project_count := cz_pb_mgr.v_devl_project_tbl.COUNT;
23511 rec_count := cz_pb_mgr.v_cz_ps_nodes_new_tbl.COUNT;
23512
23513 IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0)
23514 THEN
23515 FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
23516 LOOP
23517 rec_count := rec_count + 1;
23518 cz_pb_mgr.v_cz_ps_nodes_new_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
23519 cz_pb_mgr.v_cz_ps_nodes_old_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_old_ref(k);
23520 cz_pb_mgr.v_cz_effective_usage_mask_tbl(rec_count) := cz_pb_mgr.v_cz_effective_usage_mask_ref(k);
23521 cz_pb_mgr.v_cz_ps_nodes_idx_tbl(cz_pb_mgr.v_cz_ps_nodes_old_ref(k)):=cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
23522 cz_pb_mgr.v_ps_refid_old_tbl(rec_count) := cz_pb_mgr.v_ps_ref_id_ref(k);
23523
23524 IF (cz_pb_mgr.v_cz_ps_nodes_old_ref(k) = cz_pb_mgr.v_models_to_be_exported(i))
23525 THEN
23526 cz_pb_mgr.v_new_devl_id := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
23527 END IF;
23528
23529 ------------resolve parent ids
23530 IF (cz_pb_mgr.v_ps_parent_id_ref(k) IS NOT NULL)
23531 THEN
23532 IF (cz_pb_mgr.v_cz_ps_nodes_old_ref.COUNT > 0) THEN
23533 FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_ref.LAST
23534 LOOP
23535 IF (cz_pb_mgr.v_ps_parent_id_ref(k) = cz_pb_mgr.v_cz_ps_nodes_old_ref(i))
23536 THEN
23537 cz_pb_mgr.v_ps_parent_id_ref(k) := cz_pb_mgr.v_cz_ps_nodes_new_ref(i);
23538 EXIT;
23539 END IF;
23540 END LOOP;
23541 END IF;
23542 END IF;
23543
23544 cz_pb_mgr.v_ps_parent_id_tbl(rec_count) := cz_pb_mgr.v_ps_parent_id_ref(k);
23545 cz_pb_mgr.v_ps_eff_set_id_tbl(rec_count) := cz_pb_mgr.v_ps_eff_set_id_ref(k);
23546 cz_pb_mgr.v_ps_intl_old_tbl(rec_count) := cz_pb_mgr.v_ps_intl_old_ref(k);
23547 cz_pb_mgr.v_ps_viol_old_tbl(rec_count) := cz_pb_mgr.v_ps_viol_old_ref(k);
23548 cz_pb_mgr.v_ps_capt_rule_tbl(rec_count) := cz_pb_mgr.v_ps_capt_rule_ref(k);
23549 cz_pb_mgr.v_cz_ps_nodes_comp_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_comp_ref(k);
23550 cz_pb_mgr.v_ps_orig_sys_tbl(rec_count) := cz_pb_mgr.v_ps_orig_sys_ref(k);
23551 cz_pb_mgr.v_ps_comp_seq_path_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_path_ref(k);
23552 cz_pb_mgr.v_ps_comp_seq_id_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_id_ref(k);
23553 cz_pb_mgr.v_ps_item_id_tbl(rec_count) := cz_pb_mgr.v_ps_item_id_ref(k);
23554 cz_pb_mgr.v_ps_type_old_tbl(rec_count) := cz_pb_mgr.v_ps_type_old_ref(k);
23555 cz_pb_mgr.v_ps_src_appl_id_old_tbl(rec_count) := cz_pb_mgr.v_ps_src_appl_id_old_ref(k);
23556 cz_pb_mgr.g_ps_uits_add_tbl(rec_count) := l_ps_uits_add_tbl(k);
23557 cz_pb_mgr.g_ps_reverse_connector_tbl(rec_count) := l_reverse_connector_tbl(k);
23558 END LOOP;
23559 END IF;
23560
23561 cz_pb_mgr.v_models_to_be_exported_new(i) := cz_pb_mgr.v_new_devl_id;
23562
23563 IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0) THEN
23564 FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
23565 LOOP
23566 v_project_count := v_project_count + 1;
23567 cz_pb_mgr.v_devl_project_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
23568 -- cz_pb_mgr.v_intl_text_model_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
23569 -- cz_pb_mgr.v_intl_text_ui_tbl(v_project_count) := -1;
23570 END LOOP;
23571 END IF;
23572
23573 insert_devl_projects(cz_pb_mgr.v_new_devl_id, cz_pb_mgr.v_models_to_be_exported(i), cz_pb_mgr.v_devl_orig_sys_ref
23574 ,cz_pb_mgr.v_status_code);
23575
23576 ---------- update remote_model id in the source cz_pb_model_exports
23577 UPDATE cz_pb_model_exports t
23578 SET t.remote_model_id = cz_pb_mgr.v_models_to_be_exported_new(i)
23579 WHERE t.publication_id = cz_pb_mgr.v_publication_id
23580 AND t.server_id = cz_pb_mgr.v_server_id
23581 AND t.model_id = cz_pb_mgr.v_models_to_be_exported(i);
23582
23583 COMMIT;
23584 END LOOP; /* end loop of FOR I IN p_models_for_export */
23585 END IF; /* end if of p_models_for_export > 0 */
23586 END mm_loadoldpsnodesforitems;
23587
23588 ---------------------------------------------------------------------------------------------------------
23589 PROCEDURE get_all_properties
23590 AS
23591 v_property_count PLS_INTEGER := 0;
23592 rec_count PLS_INTEGER := 0;
23593 v_remote_prop_tbl cz_pb_mgr.t_ref;
23594 l_data_type_tbl cz_pb_mgr.t_ref;
23595 l_def_num_value_tbl cz_pb_mgr.t_ref;
23596 l_prop_num_value_tbl cz_pb_mgr.t_ref;
23597 l_old_psnode_id NUMBER;
23598
23599 l_devl_project_id_tbl cz_pb_mgr.t_ref;
23600 l_devl_project_id NUMBER;
23601
23602 -- model migration
23603 l_item_type_id_tbl cz_pb_mgr.t_ref;
23604 l_item_id_tbl cz_pb_mgr.t_ref;
23605 l_inherited_flag_tbl cz_pb_mgr.varchar_type_1_tbl;
23606 l_valuesource_tbl cz_pb_mgr.varchar_type_8_tbl;
23607 BEGIN
23608 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
23609 THEN
23610 IF (cz_pb_mgr.g_log_timing = publication_timing)
23611 THEN
23612 log_timing_message('start bulk collect from cz_psnode_propval_v');
23613 END IF;
23614
23615 IF (cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0) THEN
23616 FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_tbl.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_tbl.LAST
23617 LOOP
23618 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
23619 l_data_type_tbl.DELETE;
23620 l_prop_num_value_tbl.DELETE;
23621 l_def_num_value_tbl.DELETE;
23622
23623 BEGIN
23624 l_old_psnode_id := cz_pb_mgr.v_cz_ps_nodes_old_tbl(i);
23625 l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
23626
23627 IF (cz_pb_mgr.v_session_parameter <> model_copy)
23628 THEN
23629
23630 -- Bug 5570651: The view cz_psnode_propval_v returns records for
23631 -- REFERENCE nodes (ps_node_type:263), also. So, when publishing a model
23632 -- containing references, properties defined on the root of the referred model
23633 -- are retrieved more than once: once for the root node, and once for every node
23634 -- of type 263 referring to it. This causes publishing to create a record in
23635 -- cz_ps_prop_vals for the node with type 263. This is unnecessary because, when
23636 -- getting properties for a reference node, CIO always goes to actual root of the
23637 -- referred model. In the case of this bug, the multiple records for the same property,
23638 -- each with a different devl_project_id were causing a problem when publishing
23639 -- translatable text properties. The intl_text_id to devl_project_id map (h_devl_prj_by_intl_text)
23640 -- was populated with wrong devl_project_ids just causing the intl_text to be
23641 -- written with a wrong model_id. We solve this problem by excluding records with
23642 -- ps_node_type = 263 in the query below
23643
23644 SELECT ps_node_id, property_id, data_type, property_num_value
23645 , property_value, item_type_id, item_id, inherited_flag, valuesource, l_devl_project_id
23646 , def_num_value
23647 BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl
23648 , cz_pb_mgr.v_prop_vals_data_tbl, l_item_type_id_tbl, l_item_id_tbl, l_inherited_flag_tbl, l_valuesource_tbl
23649 , l_devl_project_id_tbl, l_def_num_value_tbl
23650 FROM cz_psnode_propval_v t
23651 WHERE t.ps_node_id = l_old_psnode_id
23652 AND t.ps_node_type <> PS_NODE_REF_TYPE;
23653 -----ORDER BY ps_node_id;
23654 ELSE
23655 SELECT a.ps_node_id, a.property_id, b.data_type, a.data_num_value
23656 , a.data_value, l_devl_project_id
23657 BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl
23658 , cz_pb_mgr.v_prop_vals_data_tbl, l_devl_project_id_tbl
23659 FROM cz_ps_prop_vals a, cz_properties b
23660 WHERE a.property_id = b.property_id AND a.ps_node_id = l_old_psnode_id AND a.deleted_flag = '0';
23661 -----ORDER BY a.ps_node_id;
23662 END IF;
23663 EXCEPTION
23664 WHEN NO_DATA_FOUND
23665 THEN
23666 cz_pb_mgr.v_err_message := 'No nodes were found in prop vals view ';
23667 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23668 WHEN OTHERS
23669 THEN
23670 cz_pb_mgr.v_err_message := 'Error in bulk collect from cz_ps_prop_vals: ' || SQLERRM;
23671 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23672 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23673 RAISE;
23674 END;
23675
23676 IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0)
23677 THEN
23678 v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
23679
23680 FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
23681 LOOP
23682 v_property_count := v_property_count + 1;
23683
23684 cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
23685 cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
23686 cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
23687 cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
23688 cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
23689
23690 -- BUG11685105
23691 cz_pb_mgr.v_psnode_propval_tbl(v_property_count).ps_node_id := cz_pb_mgr.v_prop_vals_node_tbl(j);
23692 cz_pb_mgr.v_psnode_propval_tbl(v_property_count).data_type := l_data_type_tbl(j);
23693 cz_pb_mgr.v_psnode_propval_tbl(v_property_count).property_num_value := l_prop_num_value_tbl(j);
23694 cz_pb_mgr.v_psnode_propval_tbl(v_property_count).property_value := cz_pb_mgr.v_prop_vals_data_tbl(j);
23695
23696 IF(l_data_type_tbl(j) = 8)THEN
23697
23698 --Bug #5441580. This is the case of translatable properties, data_num_value contains
23699 --intl_text_id of the property value. Hash the node's devl_project_id for later use
23700 --inserting into cz_localized_texts.
23701
23702 cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
23703 -- BUG11685105
23704 cz_pb_mgr.v_psnode_propval_tbl(v_property_count).devl_project_id := l_devl_project_id_tbl(j);
23705 END IF;
23706
23707 --model migration, maintain other columns
23708 IF (cz_pb_mgr.v_session_parameter <> model_copy)
23709 THEN
23710 cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
23711 cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
23712 cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
23713 cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
23714
23715 --There is no need to make this array public and define it in the spec as it is not used in
23716 --any dynamic sql blocks.
23717
23718 v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
23719 -- BUG11685105
23720 cz_pb_mgr.v_psnode_propval_tbl(v_property_count).def_num_value := l_def_num_value_tbl(j);
23721 END IF;
23722 END LOOP;
23723 END IF; /* end if of cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0 */
23724 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
23725 END IF;
23726 END IF; /* cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
23727 END get_all_properties;
23728 -----------------------------------------------------------------------------------------------
23729 --9812709 SriniK
23730
23731 PROCEDURE remote_bulk_get_all_properties
23732 AS
23733 v_property_count PLS_INTEGER := 0;
23734 rec_count PLS_INTEGER := 0;
23735 v_remote_prop_tbl cz_pb_mgr.t_ref;
23736 l_data_type_tbl cz_pb_mgr.t_ref;
23737 l_def_num_value_tbl cz_pb_mgr.t_ref;
23738 l_prop_num_value_tbl cz_pb_mgr.t_ref;
23739 l_old_psnode_id NUMBER;
23740
23741 l_devl_project_id_tbl cz_pb_mgr.t_ref;
23742 l_devl_project_id NUMBER;
23743
23744 -- model migration
23745 l_item_type_id_tbl cz_pb_mgr.t_ref;
23746 l_item_id_tbl cz_pb_mgr.t_ref;
23747 l_inherited_flag_tbl cz_pb_mgr.varchar_type_1_tbl;
23748 l_valuesource_tbl cz_pb_mgr.varchar_type_8_tbl;
23749
23750 CURSOR prop_cur (cp_model_to_be_exported NUMBER) IS
23751 SELECT ps_node_id, property_id, data_type, property_num_value,
23752 property_value, item_type_id, item_id, inherited_flag, valuesource, l_devl_project_id,
23753 def_num_value FROM cz_psnode_propval_v t
23754 WHERE t.devl_project_id = cp_model_to_be_exported
23755 AND t.ps_node_type <> PS_NODE_REF_TYPE;
23756
23757 TYPE b_cur IS TABLE OF prop_cur%ROWTYPE
23758 INDEX BY PLS_INTEGER;
23759 l_prop_cur b_cur;
23760
23761 BEGIN
23762 IF (cz_pb_mgr.g_log_timing = publication_timing)THEN
23763 log_timing_message('start remote bulk collect');
23764 END IF;
23765
23766 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
23767
23768 IF (cz_pb_mgr.v_session_parameter <> model_copy) THEN
23769
23770 -- Bug 5570651: The view cz_psnode_propval_v returns records for
23771 -- REFERENCE nodes (ps_node_type:263), also. So, when publishing a model
23772 -- containing references, properties defined on the root of the referred model
23773 -- are retrieved more than once: once for the root node, and once for every node
23774 -- of type 263 referring to it. This causes publishing to create a record in
23775 -- cz_ps_prop_vals for the node with type 263. This is unnecessary because, when
23776 -- getting properties for a reference node, CIO always goes to actual root of the
23777 -- referred model. In the case of this bug, the multiple records for the same property,
23778 -- each with a different devl_project_id were causing a problem when publishing
23779 -- translatable text properties. The intl_text_id to devl_project_id map (h_devl_prj_by_intl_text)
23780 -- was populated with wrong devl_project_ids just causing the intl_text to be
23781 -- written with a wrong model_id. We solve this problem by excluding records with
23782 -- ps_node_type = 263 in the query below
23783
23784 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
23785 log_timing_message('Publication start bulk collect from cz_psnode_propval_v for remote builk selectInsert');
23786 END IF;
23787
23788 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
23789
23790 LOOP
23791 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
23792 l_data_type_tbl.DELETE;
23793 l_prop_num_value_tbl.DELETE;
23794 l_def_num_value_tbl.DELETE;
23795 -- t_rowid.DELETE;
23796
23797 BEGIN
23798 l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
23799
23800 OPEN prop_cur(v_models_to_be_exported(i));
23801 log_timing_message('one - Publication start bulk collect from cz_psnode_propval_v for remote builk selectInsert'||v_models_to_be_exported(i));
23802
23803 LOOP
23804 FETCH prop_cur
23805 BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl,
23806 cz_pb_mgr.v_prop_vals_data_tbl, l_item_type_id_tbl, l_item_id_tbl, l_inherited_flag_tbl, l_valuesource_tbl,
23807 l_devl_project_id_tbl, l_def_num_value_tbl LIMIT remote_bulk_size;
23808
23809 log_timing_message('two - Publication start bulk collect from cz_psnode_propval_v for remote builk selectInsert'||l_prop_cur.COUNT);
23810
23811 EXIT WHEN l_prop_cur.COUNT = 0;
23812 END LOOP;
23813 CLOSE prop_cur;
23814
23815 EXCEPTION
23816 WHEN NO_DATA_FOUND
23817 THEN
23818 cz_pb_mgr.v_err_message := 'No nodes were found in prop vals view ';
23819 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23820 WHEN OTHERS
23821 THEN
23822 cz_pb_mgr.v_err_message := 'Error in bulk collect from cz_ps_prop_vals: ' || SQLERRM;
23823 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23824 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23825 RAISE;
23826 END;
23827 IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0)
23828 THEN
23829 v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
23830
23831 FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
23832 LOOP
23833 v_property_count := v_property_count + 1;
23834
23835 cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
23836 cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
23837 cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
23838 cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
23839 cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
23840
23841 IF(l_data_type_tbl(j) = 8)THEN
23842
23843 --Bug #5441580. This is the case of translatable properties, data_num_value contains
23844 --intl_text_id of the property value. Hash the node's devl_project_id for later use
23845 --inserting into cz_localized_texts.
23846
23847 cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
23848 END IF;
23849
23850 --model migration, maintain other columns
23851 IF (cz_pb_mgr.v_session_parameter <> model_copy)
23852 THEN
23853 cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
23854 cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
23855 cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
23856 cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
23857
23858 --There is no need to make this array public and define it in the spec as it is not used in
23859 --any dynamic sql blocks.
23860
23861 v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
23862
23863 END IF;
23864 END LOOP;
23865 END IF;
23866 END LOOP;
23867 ELSE
23868 --IF (cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0) THEN
23869
23870 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
23871 log_timing_message('Model copystart builk collect from cz_ps_prop_vals and cz_ps_prop_vals for remote builk selectInsert');
23872 END IF;
23873
23874 FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_tbl.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_tbl.LAST
23875 LOOP
23876 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
23877 l_data_type_tbl.DELETE;
23878 l_prop_num_value_tbl.DELETE;
23879 l_def_num_value_tbl.DELETE;
23880
23881 BEGIN
23882 l_old_psnode_id := cz_pb_mgr.v_cz_ps_nodes_old_tbl(i);
23883 l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
23884
23885 SELECT a.ps_node_id, a.property_id, b.data_type, a.data_num_value
23886 , a.data_value, l_devl_project_id
23887 BULK COLLECT INTO cz_pb_mgr.v_prop_vals_node_tbl, cz_pb_mgr.v_prop_vals_prop_tbl, l_data_type_tbl, l_prop_num_value_tbl
23888 , cz_pb_mgr.v_prop_vals_data_tbl, l_devl_project_id_tbl
23889 FROM cz_ps_prop_vals a, cz_properties b
23890 WHERE a.property_id = b.property_id AND a.ps_node_id = l_old_psnode_id
23891 AND a.deleted_flag = '0';
23892
23893 EXCEPTION
23894 WHEN NO_DATA_FOUND THEN
23895 cz_pb_mgr.v_err_message := 'Model copy No nodes were found in cz_ps_prop_vals and cz_properties';
23896 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23897 WHEN OTHERS THEN
23898 cz_pb_mgr.v_err_message := 'Model copy Error in bulk collect from cz_ps_prop_vals and cz_properties: ' || SQLERRM;
23899 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
23900 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23901 RAISE;
23902 END;
23903
23904 IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0) THEN
23905 v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
23906
23907 FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
23908 LOOP
23909 v_property_count := v_property_count + 1;
23910
23911 cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
23912 cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
23913 cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
23914 cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
23915 cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
23916
23917 IF(l_data_type_tbl(j) = 8)THEN
23918
23919 --Bug #5441580. This is the case of translatable properties, data_num_value contains
23920 --intl_text_id of the property value. Hash the node's devl_project_id for later use
23921 --inserting into cz_localized_texts.
23922
23923 cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
23924 END IF;
23925
23926 --model migration, maintain other columns
23927 IF (cz_pb_mgr.v_session_parameter <> model_copy)
23928 THEN
23929 cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
23930 cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
23931 cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
23932 cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
23933
23934 --There is no need to make this array public and define it in the spec as it is not used in
23935 --any dynamic sql blocks.
23936
23937 v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
23938
23939 END IF;
23940 END LOOP;
23941 END IF;
23942
23943 END LOOP;
23944 --END IF;
23945 END IF;
23946 END IF;
23947 END remote_bulk_get_all_properties;
23948
23949 --9812709
23950 ----------------------------------------------------------------------------------------------------------------------
23951 PROCEDURE mm_sync_properties
23952 AS
23953 s_prop_id NUMBER;
23954 t_prop_id NUMBER;
23955 s_item_type_id NUMBER;
23956 t_item_type_id NUMBER;
23957 s_item_id NUMBER;
23958 t_item_id NUMBER;
23959 t_prop_val_num number;
23960 new_def_num_val number;
23961 l_exists_on_target_hash cz_pb_mgr.t_ref;
23962 BEGIN
23963 /*
23964 * For all the properties collected in v_prop_vals_prop_ref
23965 */
23966 IF(cz_pb_mgr.v_prop_vals_prop_ref.COUNT > 0) THEN
23967 FOR j IN cz_pb_mgr.v_prop_vals_prop_ref.FIRST .. cz_pb_mgr.v_prop_vals_prop_ref.LAST LOOP
23968
23969 /*
23970 Get the property_id
23971 handle properties check if the property with the same name, src_application_id exists
23972 Add either the existing prop or the new prop id to table mm_v_tbl_sync_prop(old);
23973 */
23974
23975 s_prop_id := cz_pb_mgr.v_prop_vals_prop_ref(j);
23976
23977 --The table l_exists_on_target_hash records the fact that we called mm_get_ifexists_on_target on this s_prop_id
23978 --and therefore don't have to do it again. If the property does not exist on the target, the value stored will
23979 --be null.
23980
23981 IF(NOT l_exists_on_target_hash.EXISTS(s_prop_id))THEN
23982
23983 mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
23984 l_exists_on_target_hash(s_prop_id) := t_prop_id;
23985
23986 ELSE
23987 t_prop_id := l_exists_on_target_hash(s_prop_id);
23988 END IF;
23989
23990 IF(t_prop_id IS NULL)THEN
23991
23992 t_prop_id := mm_get_newid('PROP');
23993 mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
23994
23995 --Because the property does not exist on the target, we will be creating a new property and so we need both
23996 --numeric value and numeric default value. These two values are special because of their use for translatable
23997 --properties. All other property attributes are handled in a standard way and don't need any special tables.
23998
23999 IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
24000
24001 --First for the numeric value of the translatable property.
24002
24003 t_prop_val_num := mm_get_newid('INTL_TEXT');
24004
24005 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
24006 --mm_v_tbl_prop_vals_trans_old:contains all old inl text(old def num vals) for which data need to be inserted into cz_localized_texts
24007
24008 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
24009 mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := cz_pb_mgr.v_prop_vals_data_num_ref(j);
24010
24011 mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := cz_pb_mgr.h_devl_prj_by_intl_text(cz_pb_mgr.v_prop_vals_data_num_ref(j));
24012
24013 --Same for the default value of the translatable property.
24014
24015 new_def_num_val := mm_get_newid('INTL_TEXT');
24016
24017 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
24018 mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := v_prop_vals_def_num_value_ref(j);
24019
24020 mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
24021 ELSE
24022
24023 t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j); /*Other properties dont need new intl_text_id*/
24024 new_def_num_val := v_prop_vals_def_num_value_ref(j);
24025 END IF;
24026
24027 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
24028
24029 --Making mm_v_tbl_sync_prop_vals_num a hash table. Now it cannot be used directly in the only place where
24030 --it is currently used - insert_item_schema. Will need to construct an array with the values from this
24031 --hash table.
24032
24033 mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
24034 mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
24035
24036 --The following two arrays are not used.
24037
24038 --mm_v_tbl_sync_prop_type(s_prop_id) := 'PRP';
24039 --mm_v_tbl_sync_prop_folder(s_prop_id) := cz_pb_mgr.g_migration_tgt_folder_id;
24040
24041 ELSE /*get the def num values of properties on target*/
24042
24043 --The property exists on the target, so t_prop_id is not null. We should not assign a value here to
24044 --mm_v_tbl_sync_prop(s_prop_id) because later this table will be used to resolve id(s) and build an
24045 --array of all properties that need to be migrated to the target - in a call to
24046 --mm_resolve_ids_w_rp_entries in insert_item_schema procedure. So, here the mm_v_tbl_sync_prop is
24047 --supposed to have defined keys only for the properties that need to be created on the target.
24048
24049 --mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
24050
24051 --We need to find the value of the property t_prop_id for ps_node_id = cz_pb_mgr.v_prop_vals_node_ref(j).
24052 --The ps_node_id value has been already resolved to the new id in upload_item_schema after get_all_properties.
24053 --So we need to query for this value, or, if there's no such value, than the ps_node_id will be created and
24054 --should inherit the property value.
24055
24056 --We do not need the default value, because here we prepare data to be inserted into cz_ps_prop_vals, and
24057 --this table does not store default values. What we need is a value in mm_v_ht_sync_all_prop_val_num(j) for
24058 --every pair of t_prop_id, v_prop_vals_node_ref(j).
24059
24060 IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
24061
24062 t_prop_val_num := mm_get_newid('INTL_TEXT');
24063
24064 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
24065 mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := cz_pb_mgr.v_prop_vals_data_num_ref(j);
24066
24067 mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := cz_pb_mgr.h_devl_prj_by_intl_text(cz_pb_mgr.v_prop_vals_data_num_ref(j));
24068
24069 ELSE
24070
24071 t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j);
24072 END IF;
24073
24074 mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
24075 END IF;
24076
24077 s_item_id := v_prop_vals_item_id_ref(j);
24078
24079 --If s_item_id is not null, than the value is defined on the item, not on the ps node.
24080 --If the value exists on the source in cz_item_property_values, than the value is defined
24081 --on the item directly, not through item type.
24082
24083 IF((s_item_id IS NOT NULL) AND (mm_get_ifexists_on_source(s_prop_id, 'ITPROPVAL') = '1'))THEN
24084
24085 mm_v_ht_sync_it_propval(s_prop_id) := t_prop_id;
24086
24087 IF(NOT mm_v_ht_sync_items.EXISTS(s_item_id))THEN
24088
24089 mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
24090
24091 IF(t_item_id IS NULL)THEN
24092
24093 t_item_id := mm_get_newid('ITEM');
24094 mm_v_ht_sync_items(s_item_id) := t_item_id;
24095 ELSE
24096
24097 mm_v_ht_sync_exist_items(s_item_id) := t_item_id;
24098 END IF;
24099 ELSE
24100
24101 t_item_id := mm_v_ht_sync_items(s_item_id);
24102 END IF;
24103
24104 mm_v_ht_sync_it_propval_itm(s_item_id) := t_item_id;
24105 END IF;
24106
24107 --This block selects from all the properties only those that come from cz_ps_prop_vals, as
24108 --mm_v_ht_sync_ps_propval is used in mm_migrate_into_ps_prop_vals as one of the criteria
24109 --whether to insert the value into cz_ps_prop_vals.
24110
24111 IF(mm_get_ifexists_on_source(s_prop_id, 'PSPROPVAL') = '1')THEN
24112
24113 mm_v_ht_sync_ps_propval(s_prop_id) := t_prop_id;
24114 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
24115 mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
24116 END IF;
24117 END LOOP;
24118 END IF;
24119
24120 --Now we deal with properties associated with Item Types.
24121
24122 --This is the same algorithm as above, but the sources of property_id and property_num_value are different arrays and
24123 --a different query must be used (against cz_item_property_values) when the property and the item exist on the target.
24124 --For item_id, the second part of the above block must be useful.
24125
24126 IF(cz_pb_mgr.v_item_prop_type_tbl.COUNT > 0)THEN
24127
24128 --This array contains all property_id(s) of properties that are involved in the migration because of their association
24129 --with item types. If a property is defined directly on a node, it has already been processes and stored in the hash
24130 --table mm_v_tbl_sync_prop, so it won't be processed here.
24131
24132 FOR j IN cz_pb_mgr.v_item_prop_type_tbl.FIRST .. cz_pb_mgr.v_item_prop_type_tbl.LAST LOOP
24133
24134 s_prop_id := cz_pb_mgr.v_item_prop_id_tbl(j);
24135
24136 IF(NOT mm_v_tbl_sync_prop.EXISTS(s_prop_id))THEN
24137
24138 mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
24139
24140 IF(t_prop_id IS NULL)THEN
24141
24142 t_prop_id := mm_get_newid('PROP');
24143 mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
24144
24145 --Because the property does not exist on the target, we will be creating a new property and so we need the
24146 --default numeric value. Note that we should not populate array mm_v_ht_sync_all_prop_val_num in this block
24147 --because it is used for insert into cz_ps_prop_vals. We do need to populate the table
24148 --mm_v_tbl_sync_prop_vals_num with default numeric values of all properties that will be inserted on the
24149 --target, just like in the previous block.
24150
24151 IF(cz_pb_mgr.v_item_prop_data_typ_tbl(j) = 8)THEN /*Tranlatable properties*/
24152
24153 new_def_num_val := mm_get_newid('INTL_TEXT');
24154
24155 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
24156 --mm_v_tbl_prop_vals_trans_old:contains all old inl text(old def num vals) for which data need to be inserted into cz_localized_texts
24157
24158 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
24159 mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := cz_pb_mgr.v_item_prop_num_val_tbl(j);
24160
24161 --These properties are associated with item types, not ps nodes, therefore we can set 0 for model_id.
24162
24163 mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
24164 ELSE /*Other properties dont need new def num ids*/
24165
24166 new_def_num_val := cz_pb_mgr.v_item_prop_num_val_tbl(j);
24167 END IF;
24168
24169 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
24170
24171 mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
24172 ELSE /*get the def num values of properties on target*/
24173
24174 --The property exists on the target, so t_prop_id is not null. Again, these are properties associated with item types,
24175 --so we need only the default numeric value. This query cannot fail with NO_DATA_FOUND.
24176
24177 EXECUTE IMMEDIATE 'SELECT def_num_value FROM cz_properties' || cz_pb_mgr.v_db_link ||
24178 ' WHERE property_id = :1 AND deleted_flag = 0'
24179 INTO new_def_num_val
24180 USING t_prop_id;
24181
24182 mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
24183 END IF;
24184 ELSE
24185
24186 t_prop_id := mm_v_tbl_sync_prop(s_prop_id);
24187 END IF;
24188
24189 s_item_type_id := v_item_prop_type_tbl(j);
24190
24191 IF(NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))THEN
24192
24193 mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
24194
24195 IF(t_item_type_id IS NULL)THEN
24196
24197 t_item_type_id := mm_get_newid('ITEM_TYPE');
24198 mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
24199 END IF;
24200 ELSE
24201 t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
24202 END IF;
24203
24204 mm_v_ht_sync_itmtype_for_prop(s_item_type_id) := t_item_type_id;
24205 mm_v_ht_sync_item_type_prop(s_prop_id) := t_prop_id;
24206 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
24207 mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
24208 END LOOP;
24209 END IF;
24210 END mm_sync_properties;
24211 ------------------------------------------------------------------------------------------------
24212 PROCEDURE mm_sync_itemschema
24213 AS
24214 s_prop_id NUMBER;
24215 t_prop_id NUMBER;
24216 s_item_type_id NUMBER;
24217 t_item_type_id NUMBER;
24218 s_item_id NUMBER;
24219 t_item_id NUMBER;
24220
24221 BEGIN
24222 IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
24223 THEN
24224 FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
24225 LOOP
24226 s_item_id := cz_pb_mgr.v_item_masters_tbl(i);
24227
24228 IF (NOT mm_v_ht_sync_items.EXISTS(s_item_id))
24229 THEN
24230 mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
24231 IF (t_item_id IS NULL)
24232 THEN
24233 t_item_id := mm_get_newid('ITEM');
24234 mm_v_ht_sync_items(s_item_id) := t_item_id;
24235 ELSE
24236 mm_v_ht_sync_exist_items(s_item_id) := t_item_id; --Bug9180063
24237 END IF;
24238 ELSE
24239 t_item_id := mm_v_ht_sync_items(s_item_id);
24240 END IF;
24241
24242 s_item_type_id := v_item_types_tbl(i);
24243 IF (NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))
24244 THEN
24245 mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
24246 IF (t_item_type_id IS NULL)
24247 THEN
24248 t_item_type_id := mm_get_newid('ITEM_TYPE');
24249 mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
24250 END IF;
24251 ELSE
24252 t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
24253 END IF;
24254
24255 IF (NOT mm_v_ht_sync_exist_items.EXISTS(s_item_id))
24256 THEN
24257 mm_v_ht_sync_item_type_items(s_item_id) := t_item_type_id;
24258 ELSE
24259 mm_v_ht_sync_exist_item_types(s_item_id) := t_item_type_id;
24260 END IF;
24261
24262 END LOOP;
24263 END IF;
24264 END mm_sync_itemschema;
24265
24266 FUNCTION mm_get_ifexists_on_source(source_id IN NUMBER, what_exists VARCHAR2)
24267 RETURN VARCHAR2
24268 AS
24269 record_exists VARCHAR2(1) := '0';
24270 BEGIN
24271 IF (what_exists = 'PSPROPVAL')
24272 THEN
24273 SELECT '1'
24274 INTO record_exists
24275 FROM DUAL
24276 WHERE EXISTS(SELECT property_id
24277 FROM cz_ps_prop_vals
24278 WHERE property_id = source_id);
24279 ELSIF(what_exists = 'ITPROPVAL')
24280 THEN
24281 SELECT '1'
24282 INTO record_exists
24283 FROM DUAL
24284 WHERE EXISTS(SELECT property_id
24285 FROM cz_item_property_values
24286 WHERE property_id = source_id);
24287 END IF;
24288
24289 RETURN record_exists;
24290 EXCEPTION
24291 WHEN NO_DATA_FOUND
24292 THEN
24293 RETURN record_exists;
24294 END mm_get_ifexists_on_source;
24295
24296 PROCEDURE mm_get_ifexists_on_target(source_id IN NUMBER, target_id IN OUT NOCOPY NUMBER, what_exists IN VARCHAR2)
24297 AS
24298 l_sql_str VARCHAR2(2000);
24299 l_sync_msg_object_type_tkn VARCHAR2(50);
24300 l_sync_msg_object_name_tkn VARCHAR2(50);
24301 cz_property_caption VARCHAR2(50) := 'Property';
24302 cz_item_caption VARCHAR2(50) := 'Item';
24303 cz_item_type_caption VARCHAR2(50) := 'Item Type';
24304 cz_archive_caption VARCHAR2(50) := 'Archive';
24305 cz_effset_caption VARCHAR2(50) := 'Effectivity Set';
24306 BEGIN
24307 IF (what_exists = 'PROP')
24308 THEN
24309 l_sql_str :=
24310 'SELECT t.property_id, t.NAME FROM cz_properties' || cz_pb_mgr.v_db_link || ' t' || ',' ||
24311 'cz_rp_entries' || cz_pb_mgr.v_db_link || ' t1' || ',' ||
24312 'cz_properties s' || ' ' ||
24313 'WHERE t1.object_id = t.property_id AND t1.object_type = ''PRP'' ' || ' ' ||
24314 'AND t1.DELETED_FLAG = ''0'' '|| ' ' ||
24315 'AND t.NAME = s.NAME AND t1.NAME = s.NAME' || ' ' ||
24316 'AND t.data_type = s.data_type' || ' ' ||
24317 'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
24318 'AND s.property_id = :1';
24319 l_sync_msg_object_type_tkn := cz_property_caption;
24320 ELSIF(what_exists = 'ITEM')
24321 THEN
24322 --- Bug9180063 Joined with cz_item_types to get the uniqueness of item as item
24323 -- with same name can be under two different item types. This is mostly for non-BOM items case.
24324 l_sql_str :=
24325 'SELECT t.item_id, t.ref_part_nbr FROM cz_item_masters' || cz_pb_mgr.v_db_link || ' t' || ',' ||
24326 'cz_item_types' || cz_pb_mgr.v_db_link || ' t1' || ',' ||
24327 'cz_item_masters s' || ',' ||
24328 'cz_item_types s1' || ' ' ||
24329 'WHERE t.ref_part_nbr = s.ref_part_nbr' || ' ' ||
24330 'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
24331 'AND NVL(t1.src_application_id,-1) = NVL(s1.src_application_id,-1)' || ' ' ||
24332 'AND t1.name = s1.name' || ' ' ||
24333 'AND s1.item_type_id = s.item_type_id' || ' ' ||
24334 'AND t1.item_type_id = t.item_type_id' || ' ' ||
24335 'AND NVL(t.orig_sys_ref, 0) = :1' || ' ' ||
24336 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24337 'AND t1.DELETED_FLAG = ''0'' '|| ' ' ||
24338 'AND s.item_id = :2';
24339 l_sync_msg_object_type_tkn := cz_item_caption;
24340 ELSIF(what_exists = 'ITEM_TYPE')
24341 THEN
24342 l_sql_str :=
24343 'SELECT t.item_type_id, t.NAME FROM cz_item_types' || cz_pb_mgr.v_db_link || ' t' || ',' ||
24344 'cz_item_types s' || ' ' ||
24345 'WHERE t.NAME = s.NAME' || ' ' ||
24346 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24347 'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
24348 'AND s.item_type_id = :1';
24349 l_sync_msg_object_type_tkn := cz_item_type_caption;
24350 ELSIF(what_exists = 'ARCHIVE')
24351 THEN
24352 l_sql_str :=
24353 'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || ' t' || ',' ||
24354 'cz_archives s' || ' ' ||
24355 'WHERE t.object_type = ''ARC'' AND t.NAME = s.NAME' || ' ' ||
24356 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24357 'AND s.archive_id = :1';
24358 l_sync_msg_object_type_tkn := cz_archive_caption;
24359 ELSIF(what_exists = 'EFF_SETS')
24360 THEN
24361 l_sql_str :=
24362 'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || 't' || ',' ||
24363 'cz_effectivity_sets s' || ' ' ||
24364 'WHERE t.object_type = ''EFF'' AND t.NAME = s.NAME' || ' ' ||
24365 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
24366 'AND s.effectivity_set_id = :1';
24367 l_sync_msg_object_type_tkn := cz_effset_caption;
24368 END IF;
24369
24370 IF(what_exists = 'ITEM')THEN
24371
24372 EXECUTE IMMEDIATE l_sql_str
24373 INTO target_id, l_sync_msg_object_name_tkn
24374 USING NVL(mm_v_ht_items_orig_ref(source_id), 0)
24375 , source_id;
24376
24377 ELSE
24378
24379 EXECUTE IMMEDIATE l_sql_str
24380 INTO target_id, l_sync_msg_object_name_tkn
24381 USING source_id;
24382 END IF;
24383
24384 IF (target_id IS NOT NULL)
24385 THEN
24386 cz_pb_mgr.v_err_message :=
24387 cz_utils.get_text('CZ_MM_EXISTING_GLOBAL_DATA', 'GLOBAL_ENTITY', l_sync_msg_object_type_tkn, 'ENTITY_NAME', l_sync_msg_object_name_tkn);
24388 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_get_ifexists_on_target', -1);
24389 END IF;
24390 EXCEPTION
24391 WHEN NO_DATA_FOUND
24392 THEN
24393 target_id := NULL;
24394 WHEN TOO_MANY_ROWS
24395 THEN
24396 --this is an error condition where there are too many rows with the same
24397 --name, which is not likely to happen
24398 target_id := -1;
24399
24400 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.mm_get_ifexists_on_target', SQLCODE);
24401 END mm_get_ifexists_on_target;
24402
24403 ------------------------------------------------------------------------------------------------
24404 FUNCTION mm_get_newid(what_id IN VARCHAR2)
24405 RETURN NUMBER
24406 AS
24407 returnid NUMBER;
24408 l_sql_str VARCHAR2(2000);
24409 l_seq VARCHAR2(32);
24410
24411 BEGIN
24412 IF (what_id = 'PROP')
24413 THEN
24414 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_PROPERTIES_SEQ
24415 , 'CZ_PROPERTIES_S.nextval' || cz_pb_mgr.v_db_link
24416 ,cz_pb_mgr.v_oraclesequenceincr
24417 );
24418
24419 ELSIF(what_id = 'ITEM')
24420 THEN
24421 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_MASTERS_SEQ
24422 , 'CZ_ITEM_MASTERS_S.nextval' || cz_pb_mgr.v_db_link
24423 ,cz_pb_mgr.v_oraclesequenceincr
24424 );
24425 ELSIF(what_id = 'ITEM_TYPE')
24426 THEN
24427 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_TYPES_SEQ
24428 , 'CZ_ITEM_TYPES_S.nextval' || cz_pb_mgr.v_db_link
24429 ,cz_pb_mgr.v_oraclesequenceincr
24430 );
24431
24432 ELSIF(what_id = 'ARCHIVE')
24433 THEN
24434 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ARCHIVES_SEQ
24435 , 'CZ_ARCHIVES_S.nextval' || cz_pb_mgr.v_db_link
24436 ,cz_pb_mgr.v_oraclesequenceincr
24437 );
24438 ELSIF(what_id = 'INTL_TEXT')
24439 THEN
24440 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
24441 , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
24442 ,cz_pb_mgr.v_oraclesequenceincr
24443 );
24444
24445 END IF;
24446
24447 END mm_get_newid;
24448
24449 ------------------------------------------------------------------------------------------------
24450 -----procedure inserts data into cz_ps_prop_vals
24451 PROCEDURE mm_migrate_into_ps_prop_vals
24452 AS
24453 v_migrate_error NUMBER := 0;
24454 l_sql_str VARCHAR2(32000);
24455 BEGIN
24456 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
24457 THEN
24458 l_sql_str :=
24459 'BEGIN'
24460 || ' '
24461 || 'cz_pb_mgr.v_expr_count := 0;'
24462 || ' '
24463 || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
24464 || ' '
24465 || 'LOOP'
24466 || ' '
24467 ||
24468 ---only if a ps_prop_val needs to be inserted
24469 'IF ( '
24470 || 'cz_pb_mgr.mm_v_ht_sync_ps_propval.EXISTS(cz_pb_mgr.v_prop_vals_prop_ref(i))'
24471 || ' '
24472 || 'AND ( '
24473 || ' '
24474 || 'cz_pb_mgr.v_prop_vals_inherited_flag_ref(i) <> ''1'' '
24475 || ' '
24476 || 'OR'
24477 || ' '
24478 || 'cz_pb_mgr.v_prop_vals_valuesource_ref(i) = '
24479 || ''''
24480 || cz_pb_mgr.prop_valuesource_psvalue
24481 || ''''
24482 || ' '
24483 || ')'
24484 || ' '
24485 || ') THEN'
24486 || ' '
24487 ||
24488 -- we always recreate ps nodes, so there is no issue there
24489 'cz_pb_mgr.v_propval_node_id := cz_pb_mgr.v_prop_vals_node_ref(i);'
24490 || ' '
24491 ||
24492 -- the key thing here is to ensure that the target property id gets in, they have already been synchronized earlier
24493 -- in mm_sync_properties
24494 'cz_pb_mgr.v_propval_prop_id := cz_pb_mgr.mm_v_ht_sync_ps_propval(cz_pb_mgr.v_prop_vals_prop_ref(i));'
24495 || ' '
24496 || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
24497 || ' '
24498 || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.mm_v_ht_sync_all_prop_val_num(i);'
24499 || ' '
24500 || 'INSERT INTO cz_ps_prop_vals'
24501 || cz_pb_mgr.v_db_link
24502 || '('
24503 || ' '
24504 || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
24505 || ' '
24506 || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
24507 || ' '
24508 || ' ''0'',cz_pb_mgr.v_propval_data_num_value);'
24509 || ' '
24510 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
24511 || ' '
24512 || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
24513 || ' '
24514 || 'END IF;'
24515 || ' '
24516 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
24517 || ' '
24518 || 'END IF;'
24519 || ' '
24520 || 'END LOOP;'
24521 || ' '
24522 || 'END;';
24523
24524 EXECUTE IMMEDIATE l_sql_str;
24525 END IF;
24526
24527 COMMIT;
24528 EXCEPTION
24529 WHEN OTHERS
24530 THEN
24531 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
24532 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
24533 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24534 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24535 RAISE;
24536 END mm_migrate_into_ps_prop_vals;
24537
24538 ------------------------------------------------------------------------------------------------
24539 FUNCTION mm_sync_eff_sets(old_eff_set_id NUMBER, new_eff_set_id NUMBER)
24540 RETURN NUMBER
24541 AS
24542 rec_count PLS_INTEGER := 0;
24543 s_effset_id NUMBER := NULL;
24544 t_effset_id NUMBER := NULL;
24545 BEGIN
24546
24547 /* don't go to through the link everytime. if you can get the
24548 effectivity set through memory, use it. Only go to the link
24549 if it is not collected already */
24550
24551 IF (NOT mm_v_ht_eff_set_tbl_s.EXISTS(old_eff_set_id)) THEN
24552 mm_get_ifexists_on_target(old_eff_set_id, t_effset_id, 'EFF_SETS');
24553 IF (t_effset_id IS NOT NULL) THEN
24554 mm_v_ht_eff_set_tbl_s(old_eff_set_id) := t_effset_id;
24555 END IF;
24556 ELSE
24557 t_effset_id := mm_v_ht_eff_set_tbl_s(old_eff_set_id);
24558 END IF;
24559
24560
24561 --we will maintain an array of old versus new effectivity set id
24562 --when we migrate the rule sequences, if a particular rule in a rule sequence has
24563 --an effectivity set id that already exists on the target, we will disable the
24564 --the rule sequence.
24565 IF (t_effset_id IS NOT NULL)
24566 THEN
24567 mm_v_ht_eff_set_tbl_t(t_effset_id) := t_effset_id;
24568 RETURN t_effset_id;
24569 END IF;
24570
24571 RETURN NULL;
24572 END mm_sync_eff_sets;
24573
24574 ------------------------------------------------------------------------------------------------
24575 PROCEDURE mm_sync_archives
24576 AS
24577 rec_count PLS_INTEGER := 0;
24578 s_archive_id NUMBER;
24579 t_archive_id NUMBER;
24580 t_new_archive_id NUMBER;
24581 BEGIN
24582 /*check if an Archive already exists with the same name,
24583 * if it does, add to the table mm_v_ht_archive_tbl(old)
24584 * else, create a new sequence number and add to mm_v_ht_archive_tbl(old)
24585 */
24586 cz_pb_mgr.g_archives_mig_idx_ref.DELETE;
24587 cz_pb_mgr.mm_v_ht_sync_archives.DELETE;
24588 cz_pb_mgr.g_archives_obj_type.DELETE;
24589 cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
24590 cz_pb_mgr.g_archives_old_tbl.DELETE;
24591
24592 IF (cz_pb_mgr.g_archives_new_ref.COUNT > 0) THEN
24593 FOR i IN cz_pb_mgr.g_archives_new_ref.FIRST .. cz_pb_mgr.g_archives_new_ref.LAST
24594 LOOP
24595 s_archive_id := cz_pb_mgr.g_archives_old_ref(i);
24596 t_new_archive_id := cz_pb_mgr.g_archives_new_ref(i);
24597
24598 IF (NOT g_archives_mig_idx_ref.EXISTS(s_archive_id)) THEN
24599 mm_get_ifexists_on_target(s_archive_id, t_archive_id, 'ARCHIVE');
24600 IF (t_archive_id IS NULL) THEN
24601 rec_count := rec_count + 1;
24602 cz_pb_mgr.mm_v_ht_sync_archives(rec_count) := t_new_archive_id;
24603 cz_pb_mgr.g_archives_obj_type(rec_count) := 'ARC';
24604 cz_pb_mgr.g_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
24605 cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_new_archive_id;
24606 cz_pb_mgr.g_archives_old_tbl(rec_count) := s_archive_id;
24607 ELSE
24608 cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_archive_id;
24609 END IF;
24610 END IF;
24611 END LOOP;
24612 END IF;
24613 END mm_sync_archives;
24614
24615 ------------------------------------------------------------------------------------------------
24616
24617 ------------------------------------------------------------------------------------------------
24618 PROCEDURE mm_insert_archives_for_pb
24619 IS
24620 rec_count PLS_INTEGER := 0;
24621 plsql_table_list cz_pb_mgr.col_plsql_table_list;
24622 BEGIN
24623 plsql_table_list.DELETE;
24624 rec_count := 1;
24625 plsql_table_list(rec_count).col_name := 'archive_id';
24626 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_new_ref';
24627
24628 IF (cz_pb_mgr.g_log_timing = publication_timing)
24629 THEN
24630 log_timing_message('start insert_into_table cz_archives');
24631 END IF;
24632
24633 insert_into_table('cz_archives'
24634 ,'archive_id'
24635 ,cz_pb_mgr.v_db_link
24636 ,plsql_table_list
24637 ,'cz_pb_mgr.g_archives_old_ref'
24638 ,cz_pb_mgr.g_archives_old_ref
24639 );
24640 resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
24641 plsql_table_list.DELETE;
24642 rec_count := 1;
24643 plsql_table_list(rec_count).col_name := 'archive_id';
24644 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
24645 rec_count := rec_count + 1;
24646 plsql_table_list(rec_count).col_name := 'devl_project_id';
24647 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
24648 insert_into_table('cz_archive_refs'
24649 ,'archive_id'
24650 ,'devl_project_id'
24651 ,cz_pb_mgr.v_db_link
24652 ,plsql_table_list
24653 ,'cz_pb_mgr.g_archive_id_old_ref'
24654 ,'cz_pb_mgr.g_devl_proj_old_ref'
24655 ,cz_pb_mgr.g_archive_id_old_ref
24656 ,cz_pb_mgr.g_devl_proj_old_ref
24657 );
24658 END mm_insert_archives_for_pb;
24659
24660 ------------------------------------------------------------------------------------------------
24661 PROCEDURE mm_insert_archives
24662 IS
24663 rec_count PLS_INTEGER := 0;
24664 plsql_table_list cz_pb_mgr.col_plsql_table_list;
24665 mm_source_table_list cz_pb_mgr.col_plsql_table_list;
24666 mm_rec_count NUMBER := 0;
24667 BEGIN
24668 IF (cz_pb_mgr.mm_v_ht_sync_archives.COUNT > 0)
24669 THEN
24670 plsql_table_list.DELETE;
24671 rec_count := 1;
24672 plsql_table_list(rec_count).col_name := 'archive_id';
24673 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
24674
24675 IF (cz_pb_mgr.g_log_timing = publication_timing)
24676 THEN
24677 log_timing_message('start insert_into_table cz_archives');
24678 END IF;
24679
24680 insert_into_table('cz_archives'
24681 ,'archive_id'
24682 ,cz_pb_mgr.v_db_link
24683 ,plsql_table_list
24684 ,'cz_pb_mgr.g_archives_old_tbl'
24685 ,cz_pb_mgr.g_archives_old_tbl
24686 );
24687 ----------begin insert into cz_rp_entries----------------
24688 plsql_table_list.DELETE;
24689 rec_count := 1;
24690 plsql_table_list(rec_count).col_name := 'object_id';
24691 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
24692 rec_count := rec_count + 1;
24693 plsql_table_list(rec_count).col_name := 'object_type';
24694 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_obj_type';
24695 rec_count := rec_count + 1;
24696 plsql_table_list(rec_count).col_name := 'enclosing_folder';
24697 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
24698 insert_into_rp_entries('cz_rp_entries'
24699 ,'object_id'
24700 ,'object_type'
24701 ,cz_pb_mgr.v_db_link
24702 ,plsql_table_list
24703 ,'cz_pb_mgr.g_archives_old_tbl'
24704 ,'cz_pb_mgr.g_archives_obj_type'
24705 ,cz_pb_mgr.g_archives_old_tbl
24706 ,cz_pb_mgr.g_archives_obj_type
24707 );
24708 ----------end insert into cz_rp_entries----------------
24709 END IF;
24710
24711 resolve_ids(cz_pb_mgr.g_archive_id_old_ref,cz_pb_mgr.g_archive_id_ref, cz_pb_mgr.g_archives_mig_idx_ref, 'rsolve archive ids for ref');
24712 -- Need to use the right array to resolve the devl project ids.
24713 resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
24714 plsql_table_list.DELETE;
24715 rec_count := 1;
24716 plsql_table_list(rec_count).col_name := 'archive_id';
24717 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
24718 rec_count := rec_count + 1;
24719 plsql_table_list(rec_count).col_name := 'devl_project_id';
24720 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
24721 insert_into_table('cz_archive_refs'
24722 ,'archive_id'
24723 ,'devl_project_id'
24724 ,cz_pb_mgr.v_db_link
24725 ,plsql_table_list
24726 ,'cz_pb_mgr.g_archive_id_old_ref'
24727 ,'cz_pb_mgr.g_devl_proj_old_ref'
24728 ,cz_pb_mgr.g_archive_id_old_ref
24729 ,cz_pb_mgr.g_devl_proj_old_ref
24730 );
24731 END mm_insert_archives;
24732
24733 ------------------------------------------------------------------------------------------------
24734 ------------------------------------------------------------------------------------------------
24735 --procedure to debug long strings
24736 --does nothing outside of break the long str into
24737 --smaller strings so it is visible in the debugger
24738 PROCEDURE mm_break_long_str(v_inp_str IN VARCHAR2)
24739 AS
24740 v_temp_str VARCHAR2(255);
24741 BEGIN
24742 v_temp_str := SUBSTR(v_inp_str, 1, 250);
24743 v_temp_str := SUBSTR(v_inp_str, 251, 250);
24744 v_temp_str := SUBSTR(v_inp_str, 501, 250);
24745 v_temp_str := SUBSTR(v_inp_str, 751, 250);
24746 v_temp_str := SUBSTR(v_inp_str, 1001, 250);
24747 v_temp_str := SUBSTR(v_inp_str, 1251, 250);
24748 v_temp_str := SUBSTR(v_inp_str, 1501, 250);
24749 v_temp_str := SUBSTR(v_inp_str, 1751, 250);
24750 v_temp_str := SUBSTR(v_inp_str, 2001, 250);
24751 v_temp_str := SUBSTR(v_inp_str, 2251, 250);
24752 v_temp_str := SUBSTR(v_inp_str, 2501, 250);
24753 v_temp_str := SUBSTR(v_inp_str, 2751, 250);
24754 v_temp_str := SUBSTR(v_inp_str, 3001, 250);
24755 v_temp_str := SUBSTR(v_inp_str, 3251, 250);
24756 v_temp_str := SUBSTR(v_inp_str, 3501, 250);
24757 v_temp_str := SUBSTR(v_inp_str, 3751, 250);
24758 v_temp_str := SUBSTR(v_inp_str, 4001, 250);
24759 END mm_break_long_str;
24760 ------------------------------------------------------------------------------------------------
24761 PROCEDURE mm_resync_ps_items
24762 AS
24763 BEGIN
24764 FOR i IN 1 .. v_ps_item_id_tbl.COUNT
24765 LOOP
24766 IF (mm_v_ht_sync_items.EXISTS(v_ps_item_id_tbl(i)))
24767 THEN
24768 mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_items(v_ps_item_id_tbl(i));
24769 ELSIF(mm_v_ht_sync_exist_items.EXISTS(v_ps_item_id_tbl(i)))
24770 THEN
24771 mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_exist_items(v_ps_item_id_tbl(i));
24772 ELSE
24773 mm_v_ps_item_id_tbl(i) := v_ps_item_id_tbl(i);
24774 END IF;
24775 END LOOP;
24776 END;
24777
24778 ------------------------------------------------------------------------------------------------
24779 PROCEDURE mm_resync_ps_item_types
24780 AS
24781 BEGIN
24782 FOR i IN 1 .. v_ps_item_id_tbl.COUNT
24783 LOOP
24784 IF (mm_v_ht_sync_item_type_items.EXISTS(v_ps_item_id_tbl(i)))
24785 THEN
24786 mm_v_ps_item_type_id_tbl(i) := mm_v_ht_sync_item_type_items(v_ps_item_id_tbl(i));
24787 ELSIF(mm_v_ht_sync_exist_item_types.EXISTS(v_ps_item_id_tbl(i)))
24788 THEN
24789 mm_v_ps_item_type_id_tbl(i) := mm_v_ht_sync_exist_item_types(v_ps_item_id_tbl(i));
24790 ELSE
24791 mm_v_ps_item_type_id_tbl(i) := NULL;
24792 END IF;
24793 END LOOP;
24794 END;
24795 ------------------------------------------------------------------------------------------------
24796 PROCEDURE mm_resolve_ids(
24797 array_to_resolve IN cz_pb_mgr.t_ref
24798 ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
24799 ,resolving_id IN VARCHAR2
24800 ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
24801 ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
24802 )
24803 IS
24804 resolved_count NUMBER := 0;
24805 BEGIN
24806 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24807 THEN
24808 IF (array_to_resolve.COUNT > 0)
24809 THEN
24810 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24811 LOOP
24812 BEGIN
24813 IF (array_to_resolve(j) IS NOT NULL AND TO_CHAR (array_to_resolve(j)) <> '0') -- Bug9031588
24814 THEN
24815 resolved_count := resolved_count + 1;
24816 resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24817 source_array(resolved_count) := array_to_resolve(j);
24818 END IF;
24819 EXCEPTION
24820 WHEN NO_DATA_FOUND
24821 THEN
24822 resolved_count := resolved_count - 1;
24823 END;
24824 END LOOP;
24825 END IF;
24826 END IF;
24827 EXCEPTION
24828 WHEN OTHERS
24829 THEN
24830 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24831 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24832 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24833 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24834 END mm_resolve_ids;
24835 ------------------------------------------------------------------------------------------------
24836 PROCEDURE mm_resolve_orig_refs(
24837 array_to_resolve IN cz_pb_mgr.t_ref
24838 ,array_of_new_keys IN cz_pb_mgr.orig_sys_ref_type
24839 ,resolving_id IN VARCHAR2
24840 ,resolved_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24841 ,source_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24842 )
24843 IS
24844 resolved_count NUMBER := 0;
24845 BEGIN
24846 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24847 THEN
24848 IF (array_to_resolve.COUNT > 0)
24849 THEN
24850 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24851 LOOP
24852 BEGIN
24853 IF (array_to_resolve(j) IS NOT NULL AND TO_CHAR (array_to_resolve(j)) <> '0') -- Bug9031588
24854 THEN
24855 resolved_count := resolved_count + 1;
24856 resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24857 source_array(resolved_count) := array_to_resolve(j);
24858 END IF;
24859 EXCEPTION
24860 WHEN NO_DATA_FOUND
24861 THEN
24862 resolved_count := resolved_count - 1;
24863 END;
24864 END LOOP;
24865 END IF;
24866 END IF;
24867 EXCEPTION
24868 WHEN OTHERS
24869 THEN
24870 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24871 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24872 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24873 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24874 END mm_resolve_orig_refs;
24875 ------------------------------------------------------------------------------------------------
24876 PROCEDURE mm_resolve_orig_refs(
24877 array_to_resolve IN cz_pb_mgr.orig_sys_ref_type
24878 ,array_of_new_keys IN cz_pb_mgr.orig_sys_ref_type_vc2
24879 ,resolving_id IN VARCHAR2
24880 ,resolved_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24881 ,source_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
24882 )
24883 IS
24884 resolved_count NUMBER := 0;
24885 BEGIN
24886 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24887 THEN
24888 IF (array_to_resolve.COUNT > 0)
24889 THEN
24890 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24891 LOOP
24892 BEGIN
24893 IF (array_to_resolve(j) IS NOT NULL)
24894 THEN
24895 resolved_count := resolved_count + 1;
24896 resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24897 source_array(resolved_count) := array_to_resolve(j);
24898 END IF;
24899 EXCEPTION
24900 WHEN NO_DATA_FOUND
24901 THEN
24902 resolved_count := resolved_count - 1;
24903 END;
24904 END LOOP;
24905 END IF;
24906 END IF;
24907 EXCEPTION
24908 WHEN OTHERS
24909 THEN
24910 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24911 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24912 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24913 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24914 END mm_resolve_orig_refs;
24915 ------------------------------------------------------------------------------------------------
24916 PROCEDURE mm_resolve_ids_w_rp_entries(
24917 array_to_resolve IN cz_pb_mgr.t_ref
24918 ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
24919 ,object_type IN VARCHAR2
24920 ,target_folder IN NUMBER
24921 ,resolving_id IN VARCHAR2
24922 ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
24923 ,object_type_array IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
24924 ,tgt_folder_array IN OUT NOCOPY cz_pb_mgr.t_ref
24925 ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
24926 )
24927 IS
24928 resolved_count NUMBER := 0;
24929 resolved_array_idx cz_pb_mgr.t_ref_idx_vc2;
24930
24931 BEGIN
24932 resolved_array_idx.DELETE;
24933 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
24934 THEN
24935 IF (array_to_resolve.COUNT > 0)
24936 THEN
24937 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
24938 LOOP
24939 BEGIN
24940 IF (array_to_resolve(j) IS NOT NULL)
24941 THEN
24942 IF NOT (resolved_array_idx.EXISTS(array_to_resolve(j))) THEN
24943 resolved_count := resolved_count + 1;
24944 resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
24945 resolved_array_idx(array_to_resolve(j)) := array_of_new_keys(array_to_resolve(j));
24946 object_type_array(resolved_count) := object_type;
24947 tgt_folder_array(resolved_count) := target_folder;
24948 source_array(resolved_count) := array_to_resolve(j);
24949 END IF;
24950 END IF;
24951 EXCEPTION
24952 WHEN NO_DATA_FOUND
24953 THEN
24954 resolved_count := resolved_count - 1;
24955 END;
24956 END LOOP;
24957 END IF;
24958 END IF;
24959 EXCEPTION
24960 WHEN OTHERS
24961 THEN
24962 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
24963 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
24964 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
24965 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
24966 END mm_resolve_ids_w_rp_entries;
24967 ------------------------------------------------------------------------------------------------
24968 --if a rule_seq has a rule whose effectivity_set_id already
24969 --exists on the target, then set the rule effectivity to be
24970 --never effective for all the rules in that rule sequence
24971 PROCEDURE mm_resolve_rule_seq_effsetid
24972 AS
24973 b_update_rules BOOLEAN := FALSE;
24974 new_folder_id NUMBER;
24975 l_sql_string VARCHAR2(2000);
24976 remote_effs_cv ref_cursor;
24977 remote_rule_seq_name_cv ref_cursor;
24978 l_effecivity_set_id NUMBER;
24979 l_rule_folder_name cz_rule_folders.NAME%TYPE;
24980 l_rule_name cz_rules.NAME%TYPE;
24981 BEGIN
24982 --all the rule sequences have been accumulated here
24983 IF (mm_v_tbl_rule_seq.COUNT > 0) THEN
24984 FOR rule_seq IN mm_v_tbl_rule_seq.FIRST .. mm_v_tbl_rule_seq.LAST
24985 LOOP
24986 --get the new folder id from the hash table
24987 new_folder_id := v_cz_folders_id_idx_ref(mm_v_tbl_rule_seq(rule_seq));
24988 --get all the effectivity_set_ids for the rules in that rule sequence
24989 l_sql_string :=
24990 'SELECT effectivity_set_id, name'
24991 || ' '
24992 || 'FROM cz_rules'
24993 || cz_pb_mgr.v_db_link
24994 || ' '
24995 || 'WHERE rule_folder_id = :1'
24996 || ' '
24997 || ' AND effectivity_set_id is not null'
24998 || ' '
24999 || ' AND deleted_flag = ''0'' ';
25000 b_update_rules := FALSE;
25001
25002 OPEN remote_effs_cv FOR l_sql_string USING new_folder_id;
25003
25004 LOOP
25005 FETCH remote_effs_cv
25006 INTO l_effecivity_set_id, l_rule_name;
25007
25008 EXIT WHEN remote_effs_cv%NOTFOUND;
25009
25010 IF (mm_v_ht_eff_set_tbl_t.EXISTS(l_effecivity_set_id))
25011 THEN
25012 b_update_rules := TRUE;
25013 EXIT;
25014 END IF;
25015 END LOOP;
25016
25017 CLOSE remote_effs_cv;
25018
25019 --update the rules to be never effective
25020 IF b_update_rules
25021 THEN
25022 --log the event
25023 l_sql_string :=
25024 'SELECT name'
25025 || ' '
25026 || 'FROM cz_rule_folders'
25027 || cz_pb_mgr.v_db_link
25028 || ' '
25029 || 'WHERE rule_folder_id = :1'
25030 || ' '
25031 || 'AND deleted_flag = ''0'' ';
25032
25033 OPEN remote_rule_seq_name_cv FOR l_sql_string USING new_folder_id;
25034
25035 FETCH remote_rule_seq_name_cv
25036 INTO l_rule_folder_name;
25037
25038 CLOSE remote_rule_seq_name_cv;
25039
25040 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_EFFSET_CORRUPT_RULSEQ', 'RULE_NAME', l_rule_name, 'RULE_SEQUENCE', l_rule_folder_name);
25041 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_resolve_rule_seq_effsetid', -1);
25042 l_sql_string :=
25043 'UPDATE cz_rules'
25044 || cz_pb_mgr.v_db_link
25045 || ' '
25046 || 'SET effective_from = :1'
25047 || ', '
25048 || ' effective_until = :2'
25049 || ','
25050 || ' effectivity_set_id = NULL'
25051 || ' '
25052 || 'WHERE rule_folder_id ='
25053 || new_folder_id
25054 || ' '
25055 || ' AND deleted_flag = ''0'' ';
25056
25057 EXECUTE IMMEDIATE l_sql_string
25058 USING cz_utils.epoch_end, cz_utils.epoch_begin;
25059 END IF;
25060 END LOOP;
25061 END IF;
25062 END mm_resolve_rule_seq_effsetid;
25063 ------------------------------------------------------------------------------------------------
25064 /*
25065 * Bug 5516478
25066 * On migrating a model to a remote server, if there are BOM models involved,
25067 * CZ_XFR_PROJECT_BILLS are also migrated. However, the column SOURCE_SERVER
25068 * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
25069 * migration target. Currently it was being copied from the source to the
25070 * target. In order to do this we need to query CZ_SERVERS in the migration
25071 * target to get the SERVER_LOCAL_ID.
25072 */
25073 FUNCTION getRemoteImportServer(x_import_server_on_local IN OUT NOCOPY cz_servers.server_local_id%TYPE) RETURN NUMBER
25074 AS
25075
25076 l_sql_string VARCHAR2(2000);
25077 l_remote_server_id cz_servers.server_local_id%TYPE;
25078 l_hostname cz_servers.hostname%TYPE;
25079 l_db_listener_port cz_servers.db_listener_port%TYPE;
25080 l_instance_name cz_servers.instance_name%TYPE;
25081
25082 BEGIN
25083
25084 l_sql_string := 'SELECT server_local_id, hostname, db_listener_port, instance_name' ||
25085 ' FROM cz_servers' || cz_pb_mgr.v_db_link ||
25086 ' WHERE import_enabled = 1';
25087
25088 BEGIN
25089
25090 EXECUTE IMMEDIATE l_sql_string INTO l_remote_server_id, l_hostname, l_db_listener_port, l_instance_name;
25091
25092 EXCEPTION
25093 WHEN OTHERS THEN
25094 --'Unable to resolve the import source server ID for the migration target.'
25095 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_ERR_MIGTGT_IMPORT_SERVER ');
25096 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
25097 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
25098 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
25099 RAISE;
25100 END;
25101
25102 --Now we need to identify a record in the local cz_servers that points to the target's import
25103 --source server. Per migration design, such record should exist.
25104 --We are not trying to detect the case when the target's import server is the migration source
25105 --itself - to do this we need to match the target's server record to the LOCAL record, but we
25106 --don't consistently populate instance parameters for the LOCAL record.
25107
25108 l_db_listener_port := UPPER(LTRIM(RTRIM(l_db_listener_port)));
25109 l_hostname := UPPER(LTRIM(RTRIM(l_hostname)));
25110 l_instance_name := UPPER(LTRIM(RTRIM(l_instance_name)));
25111
25112 x_import_server_on_local := NULL;
25113
25114 IF(l_remote_server_id = 0)THEN
25115
25116 --If the migration target import source is local, then it is the same as the target server.
25117
25118 x_import_server_on_local := cz_pb_mgr.v_server_id;
25119 ELSE
25120
25121 FOR c_server IN (SELECT server_local_id FROM cz_servers
25122 WHERE UPPER(LTRIM(RTRIM(db_listener_port))) = l_db_listener_port
25123 AND UPPER(LTRIM(RTRIM(hostname))) = l_hostname
25124 AND UPPER(LTRIM(RTRIM(instance_name))) = l_instance_name)LOOP
25125
25126 --The first matched instance will be used.
25127
25128 x_import_server_on_local := c_server.server_local_id;
25129 END LOOP;
25130 END IF;
25131
25132 IF(x_import_server_on_local IS NULL)THEN
25133
25134 --The import source of the migration target instance is not defined as a remote server on the migration source instance.
25135 --Please create a link to hostname '%HOSTNAME', listener port %LISTENER, instance name '%INSTANCE' by running the
25136 --Define Remote Server and Enable Remote Server concurrent programs on the migration source instance.
25137
25138 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_ERR_MIGTGT_TARGET_SERVER', 'HOSTNAME', l_hostname, 'LISTENER', l_db_listener_port, 'INSTANCE', l_instance_name);
25139 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
25140 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
25141 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
25142 RETURN -1;
25143 END IF;
25144
25145 RETURN l_remote_server_id;
25146 END;
25147 ------------------------------------------------------------------------------------------------
25148 /*
25149 * Bug 5523268
25150 * THis function will check if there are any child models that
25151 * have changed. At this point, we have considered only
25152 * UI Changes, but there may be a requirement to check
25153 * everything that happens in has_tobe_published. We
25154 * need to revisit this at a later date. We call
25155 * this for model migration in get_models_tobe_exported;
25156 */
25157 FUNCTION has_ui_inany_chld_mdl_changed(rootmodelid IN NUMBER) RETURN boolean IS
25158
25159 v_models_tbl cz_pb_mgr.t_ref;
25160 v_last_update_date cz_ui_defs.last_update_date%TYPE;
25161 v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
25162 curr_model_tbl cz_pb_mgr.t_ref;
25163
25164 BEGIN
25165 get_source_models(rootmodelid, v_models_tbl);
25166
25167 /* do this only for child models
25168 * We iterate through the children and check if the UI has changed
25169 * for anything. For model migration, the root will
25170 * ALWAYS be migrated.
25171 */
25172 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
25173 LOOP
25174 curr_model_tbl(0) := v_models_tbl(i);
25175
25176 IF(v_models_tbl(i) <> rootmodelid) THEN
25177
25178 v_last_xfr_activity := get_mdl_last_xfr_activity(v_models_tbl(i), cz_pb_mgr.v_server_id);
25179 IF cz_pb_mgr.v_server_id<>0 THEN
25180 get_source_uis(rootmodelid, curr_model_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
25181 END IF;
25182 get_oa_uis(curr_model_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref, cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
25183
25184 IF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
25185 FOR j IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
25186 LOOP
25187 get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(j), v_last_update_date);
25188
25189 IF(v_last_xfr_activity IS NULL) THEN
25190 RETURN TRUE;
25191 ELSIF((v_last_xfr_activity IS NOT NULL)
25192 AND(v_last_update_date > v_last_xfr_activity)) THEN
25193 RETURN TRUE;
25194 END IF;
25195
25196 END LOOP;
25197 END IF;
25198
25199 END IF;
25200
25201 END LOOP;
25202
25203 RETURN FALSE;
25204
25205 EXCEPTION
25206 WHEN others THEN
25207 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR', 'SQLERRM', sqlerrm);
25208 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.HAS_TOBE_PUBLISHED', SQLCODE);
25209 cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message, 1, 2000)));
25210 RAISE;
25211 END has_ui_inany_chld_mdl_changed;
25212 ------------------------------------------------------------------------------------------------
25213 /* Bug 5523268
25214 * this routine will check for the last transfer activity.
25215 * There is already a routine 'get_last_xfr_activity', but
25216 * it does check the transfer activity of the ROOT MODEL and
25217 * NOT the current child model. So we need to check if the
25218 * CHILD was transfered before during migration.
25219 */
25220 FUNCTION get_mdl_last_xfr_activity(
25221 p_model_id IN cz_model_publications.model_id%TYPE
25222 ,p_server_id IN cz_model_publications.server_id%TYPE
25223
25224 ) RETURN DATE
25225 AS
25226 x_last_xfr_activity DATE := NULL;
25227 BEGIN
25228
25229 SELECT last_xfr_activity
25230 INTO x_last_xfr_activity
25231 FROM cz_pb_model_exports
25232 WHERE cz_pb_model_exports.export_id =
25233 (SELECT MAX(export_id)
25234 FROM cz_pb_model_exports z
25235 WHERE z.model_id = p_model_id
25236 AND z.server_id = p_server_id
25237 AND z.status = 'OK'
25238 AND z.publication_id IN(
25239 SELECT publication_id
25240 FROM cz_model_publications
25241 WHERE export_status IN('OK', 'PUP')
25242 AND server_id = p_server_id
25243 AND UPPER(publication_mode) = cz_model_migration_pvt.mode_migration));
25244 --SPUPPALA bug#7116052 7-AUG-2009
25245 RETURN x_last_xfr_activity;
25246
25247
25248 EXCEPTION
25249 WHEN OTHERS
25250 THEN
25251
25252 RETURN x_last_xfr_activity;
25253 END get_mdl_last_xfr_activity;
25254 ------------------------------------------------------------------------------------------------
25255 BEGIN
25256 get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
25257 END cz_pb_mgr;