[Home] [Help]
PACKAGE BODY: APPS.CZ_PB_MGR
Source
1 PACKAGE BODY cz_pb_mgr AS
2 /* $Header: czpbmgrb.pls 120.229.12010000.6 2008/12/08 08:05:34 salapart 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 ENGINE_TYPE_FCE CONSTANT VARCHAR2(1) := 'F';
22
23 ENTITY_TYPE_UCT CONSTANT VARCHAR2(3) := 'UCT';
24 ENTITY_TYPE_UMT CONSTANT VARCHAR2(3) := 'UMT';
25 ENTITY_TYPE_SIGNATURE CONSTANT VARCHAR2(3) := 'SIG';
26 ENTITY_TYPE_RULE CONSTANT VARCHAR2(3) := 'RUL';
27 ENTITY_TYPE_PROPERTY CONSTANT VARCHAR2(3) := 'PRP';
28
29 -- special fields in id resolution
30 -- cz_des_chart_cells.primary_opt_id, secondary_opt_id, secondary_feature_id
31 -- cz_des_chart_feature.feature_id, cz_rules.rule_folder_id,
32 -- cz_ps_nodes.reference_id, cz_ui_nodes.ui_node_ref_id
33 FLD_PSN_REFERENCE_ID CONSTANT VARCHAR2(9) := 'PSNREFID';
34 FLD_RULE_COMPONENT_ID CONSTANT VARCHAR2(9) := 'RULCOMID';
35 FLD_UI_NODE_REF_ID CONSTANT VARCHAR2(9) := 'UINREFID';
36 FLD_IGNORE_NOW CONSTANT VARCHAR2(9) := 'IGNOREID';
37
38 NONSEED_UCT_MIN_ID CONSTANT INTEGER := 2000;
39 NONSEED_UMT_MIN_ID CONSTANT INTEGER := 1000;
40 NONSEED_SIGN_MIN_ID CONSTANT INTEGER := 10000;
41 NONSEED_RULE_MIN_ID CONSTANT INTEGER := 1000;
42 NONSEED_PROP_MIN_ID CONSTANT INTEGER := 1000;
43
44 RULE_TYPE_DISPLAY_CONDITION CONSTANT INTEGER := 33;
45 RULE_TYPE_ENABLED_CONDITION CONSTANT INTEGER := 34;
46 RULE_TYPE_CONFIG_EXTENSION CONSTANT INTEGER := 300;
47 RULE_TYPE_POPULATOR CONSTANT INTEGER := 502;
48 RULE_TYPE_CAPTION CONSTANT INTEGER := 700;
49
50 g_engine_type cz_devl_projects.config_engine_type%TYPE;
51
52 --Bug #5186307 - deferred.
53 --v_item_synched_osr t_item_origsysref_tbl;
54 --v_itemtype_synched_osr t_itemtype_origsysref_tbl;
55
56 v_prop_vals_def_num_value_ref cz_pb_mgr.t_ref;
57
58 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
59 -------procedure that resolves remote reference nodes - forward declaration
60 PROCEDURE resolve_ref_ids_not_found(
61 p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
62 ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
63 ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
64 ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
65 ,p_column_name IN VARCHAR2
66 ,x_status IN OUT NOCOPY VARCHAR2
67 );
68
69 PROCEDURE rollback_data(p_db_link IN VARCHAR2);
70 PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE);
71 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
72 -----------delete session variables
73 PROCEDURE delete_session_parameters
74 AS
75 BEGIN
76 cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.delete;
77 cz_pb_mgr.g_ui_actns_ui_act_id_old_ref.delete;
78 cz_pb_mgr.v_models_to_be_exported.DELETE;
79 cz_pb_mgr.v_models_not_to_be_exported.DELETE;
80 cz_pb_mgr.v_models_to_be_exported_new.DELETE;
81 v_remote_names_not_exported.DELETE;
82 v_remote_names_exported.DELETE;
83 cz_pb_mgr.v_templates_tobe_exported.DELETE;
84 cz_pb_mgr.v_templates_not_exported.DELETE;
85 cz_pb_mgr.v_global_templs_ref.DELETE;
86 cz_pb_mgr.v_server_id := 0;
87 cz_pb_mgr.v_ui_def_id := 0;
88 cz_pb_mgr.v_export_id := 0;
89 cz_pb_mgr.v_publication_id := 0;
90 cz_pb_mgr.v_root_model_id := 0;
91 cz_pb_mgr.target_root_model_id := 0;
92 cz_pb_mgr.v_root_ui_def_id := 0;
93 cz_pb_mgr.v_status_code := NULL;
94 cz_pb_mgr.loguser := NULL;
95 cz_pb_mgr.v_err_message := NULL;
96 cz_pb_mgr.sequence_no := 0;
97 cz_pb_mgr.v_oraclesequenceincr := 0;
98 cz_pb_mgr.v_db_link := NULL;
99 cz_pb_mgr.v_insert_string := NULL;
100 cz_pb_mgr.v_new_devl_id := 0;
101 cz_pb_mgr.v_msg_tbl.DELETE;
102 cz_pb_mgr.v_pb_run_id := 0;
103 cz_pb_mgr.v_new_object_id := 0;
104 cz_pb_mgr.v_server_local_name := NULL;
105 cz_pb_mgr.copy_rules := 'YES';
106 cz_pb_mgr.copy_uis := 'YES';
107 cz_pb_mgr.copy_root_only := 'YES';
108 v_application_id_tbl.DELETE;
109 v_usage_id_tbl.DELETE;
110 v_language_id_tbl.DELETE;
111 cz_pb_mgr.g_item_type_id := 0;
112 cz_pb_mgr.g_item_id := 0;
113 g_object_type := ' ';
114 g_cz_ui_pages_ui_def_ref.DELETE;
115 g_cz_ui_pages_jrad_doc_ref.DELETE;
116 g_cz_ui_pages_capt_id_ref.DELETE;
117 cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
118 cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
119 g_cz_ui_pages_ui_def_tbl.DELETE;
120 g_cz_ui_pages_jrad_doc_tbl.DELETE;
121 g_cz_ui_pages_capt_id_tbl.DELETE;
122 g_page_sets_ui_old_ref.DELETE;
123 g_page_sets_ui_ref.DELETE;
124 g_page_sets_pg_tbl.DELETE;
125 cz_pb_mgr.v_ui_images_ui_ref.DELETE;
126 cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
127 cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
128 cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
129 g_page_refs_ui_def_old_ref.DELETE;
130 g_page_refs_ui_def_new_ref.DELETE;
131 g_page_refs_cond_id_ref.DELETE;
132 g_page_refs_capt_id_ref.DELETE;
133 g_page_refs_tgt_ui_ref.DELETE;
134 g_page_refs_tgt_expl_tbl.DELETE;
135 g_ui_refs_old_ui_def_ref.DELETE;
136 g_ui_refs_new_ui_def_ref.DELETE;
137 g_ui_refs_ref_ui_def_ref.DELETE;
138 g_ui_refs_expl_id_ref.DELETE;
139 g_ui_ps_maps_old_ui_def_ref.DELETE;
140 g_ui_ps_maps_new_ui_def_ref.DELETE;
141 g_ui_ps_maps_ctrl_tmp_ref.DELETE;
142 cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
143 cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
144 g_ui_templates_old_temp_id_ref.DELETE;
145 g_ui_templates_new_temp_id_ref.DELETE;
146 g_ui_templates_idx_temp_ref.DELETE;
147 g_ui_templates_ui_def_old_ref.DELETE;
148 g_ui_templates_ui_def_new_ref.DELETE;
149 g_ui_templates_jrad_new_ref.DELETE;
150 g_ui_templates_jrad_old_ref.DELETE;
151 g_tmpl_jrad_old_tbl.DELETE;
152 g_tmpl_jrad_new_tbl.DELETE;
153 g_cnt_typ_tmpls_old_uidef_ref.DELETE;
154 g_cnt_typ_tmpls_new_uidef_ref.DELETE;
155 g_cnt_typ_tmpls_tmpid_ref.DELETE;
156 g_cnt_typ_tmpls_tgtuidef_ref.DELETE;
157 g_cnt_typ_tmpls_cont_ref.DELETE;
158 g_ui_actns_ui_act_id_ref.DELETE;
159 g_ui_actns_ui_uidef_ref.DELETE;
160 g_ui_actns_ui_tgtui_ref.DELETE;
161 g_pages_ui_def_old_ref.DELETE;
162 cz_pb_mgr.v_sig_new_ref.DELETE;
163 cz_pb_mgr.v_sig_old_ref.DELETE;
164 cz_pb_mgr.v_sig_idx_ref.DELETE;
165 cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
166 cz_pb_mgr.v_arg_sig_tbl.DELETE;
167 cz_pb_mgr.v_data_sig_tbl.DELETE;
168 cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
169 cz_pb_mgr.v_cz_ui_nodes_idx_ref.DELETE;
170 cz_pb_mgr.l_cnt_typ_tmpls_cont_ref.DELETE;
171 cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.DELETE;
172 cz_pb_mgr.l_ui_images_ui_ref.DELETE;
173 cz_pb_mgr.l_ui_images_enty_tbl.DELETE;
174 cz_pb_mgr.l_ui_images_usg_tbl.DELETE;
175 cz_pb_mgr.h_devl_prj_by_intl_text.DELETE;
176 cz_pb_mgr.v_propval_node_id := NULL;
177 cz_pb_mgr.v_propval_prop_id := NULL;
178 cz_pb_mgr.v_propval_data_value := NULL;
179
180 cz_pb_mgr.g_ps_reverse_connector_tbl.DELETE;
181 cz_pb_mgr.g_ui_actions_id_idx_ref.DELETE;
182 cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
183 cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
184 cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
185 cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
186 cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
187 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
188 cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
189 cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
190 cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
191 cz_pb_mgr.g_fcefile_old_id_tbl.DELETE;
192 cz_pb_mgr.g_fcefile_new_id_tbl.DELETE;
193 cz_pb_mgr.g_fcefile_compid_tbl.DELETE;
194 g_migration_group_id := NULL;
195
196 --Bug #5186307 - deferred.
197 --v_item_synched_osr.DELETE;
198 --v_itemtype_synched_osr.DELETE;
199
200 --The sequence incrementor cannot be 0, therefore we need to re-read it.
201
202 get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
203 EXCEPTION
204 WHEN OTHERS
205 THEN
206 NULL;
207 END delete_session_parameters;
208
209 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
210 -----procedure that clears pl/sql tables for a table
211 -----@p_table_name : name of the table
212 -----@p_table_type : type of array
213 -----@x_status : publication status parameter
214 PROCEDURE clear_tables(p_table_name IN VARCHAR2, p_table_type IN VARCHAR2, x_status IN OUT NOCOPY VARCHAR2)
215 AS
216 BEGIN
217 IF (p_table_name = 'cz_ps_nodes')
218 THEN
219 IF (p_table_type = 'tbl')
220 THEN
221 cz_pb_mgr.v_cz_ps_nodes_new_tbl.DELETE;
222 cz_pb_mgr.v_cz_ps_nodes_old_tbl.DELETE;
223 cz_pb_mgr.v_cz_ps_nodes_idx_tbl.DELETE;
224 cz_pb_mgr.v_ps_parent_id_tbl.DELETE;
225 cz_pb_mgr.v_ps_refid_old_tbl.DELETE;
226 cz_pb_mgr.v_devl_project_tbl.DELETE;
227 cz_pb_mgr.v_ps_eff_set_id_tbl.DELETE;
228 cz_pb_mgr.v_ps_intl_old_tbl.DELETE;
229 cz_pb_mgr.v_ps_viol_old_tbl.DELETE;
230 cz_pb_mgr.v_ps_orig_sys_tbl.DELETE;
231 cz_pb_mgr.v_ps_comp_seq_path_tbl.DELETE;
232 cz_pb_mgr.v_ps_comp_seq_id_tbl.DELETE;
233 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
234 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
235 cz_pb_mgr.v_ps_capt_rule_tbl.DELETE;
236 cz_pb_mgr.v_cz_ps_nodes_comp_tbl.DELETE;
237 cz_pb_mgr.v_ps_item_id_tbl.DELETE;
238 cz_pb_mgr.v_ps_type_old_tbl.DELETE;
239 cz_pb_mgr.g_ps_uits_add_tbl.DELETE;
240 cz_pb_mgr.g_usg_name_processed.DELETE;
241 ELSIF(p_table_type = 'ref')
242 THEN
243 cz_pb_mgr.v_cz_ps_nodes_new_ref.DELETE;
244 cz_pb_mgr.v_cz_ps_nodes_old_ref.DELETE;
245 cz_pb_mgr.v_ps_parent_id_ref.DELETE;
246 cz_pb_mgr.v_ps_ref_id_ref.DELETE;
247 cz_pb_mgr.v_ps_eff_set_id_ref.DELETE;
248 cz_pb_mgr.v_ps_intl_old_ref.DELETE;
249 cz_pb_mgr.v_ps_viol_old_ref.DELETE;
250 cz_pb_mgr.v_ps_orig_sys_ref.DELETE;
251 cz_pb_mgr.v_ps_comp_seq_path_ref.DELETE;
252 cz_pb_mgr.v_ps_comp_seq_id_ref.DELETE;
253 cz_pb_mgr.v_ps_capt_rule_ref.DELETE;
254 cz_pb_mgr.v_cz_ps_nodes_comp_ref.DELETE;
255 cz_pb_mgr.v_ps_item_id_ref.DELETE;
256 cz_pb_mgr.v_ps_type_old_ref.DELETE;
257 END IF;
258 ELSIF(p_table_name = 'cz_model_ref_expls')
259 THEN
260 IF (p_table_type = 'tbl')
261 THEN
262 cz_pb_mgr.v_component_id_old_tbl.DELETE;
263 cz_pb_mgr.v_parent_expl_id_tbl.DELETE;
264 cz_pb_mgr.v_child_expl_id_tbl.DELETE;
265 cz_pb_mgr.v_referring_node_id_tbl.DELETE;
266 ELSIF(p_table_type = 'ref')
267 THEN
268 cz_pb_mgr.v_cz_model_ref_expls_idx_ref.DELETE;
269 cz_pb_mgr.v_cz_model_ref_expls_old_ref.DELETE;
270 cz_pb_mgr.v_cz_model_ref_expls_new_ref.DELETE;
271 cz_pb_mgr.v_component_id_old_ref.DELETE;
272 cz_pb_mgr.v_parent_expl_id_ref.DELETE;
273 cz_pb_mgr.v_child_expl_id_ref.DELETE;
274 cz_pb_mgr.v_referring_node_id_ref.DELETE;
275 cz_pb_mgr.v_ref_model_id_ref.DELETE;
276 END IF;
277 ELSIF(p_table_name = 'cz_func_comp_specs')
278 THEN
279 IF (p_table_type = 'tbl')
280 THEN
281 cz_pb_mgr.v_cz_func_comp_old_tbl.DELETE;
282 cz_pb_mgr.v_cz_func_comp_new_tbl.DELETE;
283 ELSIF(p_table_type = 'ref')
284 THEN
285 cz_pb_mgr.v_cz_func_comp_new_ref.DELETE;
286 cz_pb_mgr.v_cz_func_comp_old_ref.DELETE;
287 cz_pb_mgr.v_cz_func_comp_idx_ref.DELETE;
288 cz_pb_mgr.v_cz_func_devl_old_ref.DELETE;
289 cz_pb_mgr.v_cz_func_cid_old_ref.DELETE;
290 cz_pb_mgr.v_cz_func_expl_old_ref.DELETE;
291 cz_pb_mgr.v_cz_func_fld_old_ref.DELETE;
292 cz_pb_mgr.v_cz_func_obj_ref.DELETE;
293 END IF;
294 ELSIF(p_table_name = 'cz_ui_defs')
295 THEN
296 IF (p_table_type = 'tbl')
297 THEN
298 cz_pb_mgr.v_ui_devl_id_tbl.DELETE;
299 cz_pb_mgr.v_ui_comp_id_tbl.DELETE;
300 ELSIF(p_table_type = 'ref')
301 THEN
302 cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
303 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
304 cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
305 cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
306 cz_pb_mgr.v_ui_devl_id_ref.DELETE;
307 cz_pb_mgr.v_ui_comp_id_ref.DELETE;
308 cz_pb_mgr.v_ui_defs_mcpt_rule_ref.DELETE;
309 cz_pb_mgr.v_ui_defs_pcpt_rule_ref.DELETE;
310 cz_pb_mgr.v_master_template_id_ref.DELETE;
311 END IF;
312 ELSIF(p_table_name = 'cz_ui_nodes')
313 THEN
314 IF (p_table_type = 'ref')
315 THEN
316 cz_pb_mgr.v_cz_ui_nodes_new_ref.DELETE;
317 cz_pb_mgr.v_cz_ui_nodes_old_ref.DELETE;
318 cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref.DELETE;
319 cz_pb_mgr.v_cz_ui_nodes_parent_id_ref.DELETE;
320 cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref.DELETE;
321 cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref.DELETE;
322 cz_pb_mgr.v_cz_ui_nodes_component_id_ref.DELETE;
323 cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref.DELETE;
324 cz_pb_mgr.v_cz_ui_nodes_expl_id_ref.DELETE;
325 cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref.DELETE;
326 cz_pb_mgr.v_cz_ui_nodes_capt_id_ref.DELETE;
327 cz_pb_mgr.v_cz_ui_nodes_tool_id_ref.DELETE;
328 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
329 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
330 END IF;
331 ELSIF(p_table_name = 'cz_ps_prop_vals')
332 THEN
333 IF (p_table_type = 'tbl')
334 THEN
335 cz_pb_mgr.v_prop_vals_node_tbl.DELETE;
336 cz_pb_mgr.v_prop_vals_prop_tbl.DELETE;
337 cz_pb_mgr.v_prop_vals_data_tbl.DELETE;
338 cz_pb_mgr.v_prop_vals_num_tbl.DELETE;
339 cz_pb_mgr.v_prop_vals_origsys_tbl.DELETE;
340 cz_pb_mgr.v_prop_vals_datanum_tbl.DELETE;
344 cz_pb_mgr.v_prop_vals_prop_ref.DELETE;
341 ELSIF(p_table_type = 'ref')
342 THEN
343 cz_pb_mgr.v_prop_vals_node_ref.DELETE;
345 cz_pb_mgr.v_prop_vals_data_ref.DELETE;
346 cz_pb_mgr.v_prop_vals_num_ref.DELETE;
347 cz_pb_mgr.v_prop_vals_origsys_ref.DELETE;
348 cz_pb_mgr.v_prop_vals_datanum_ref.DELETE;
349 cz_pb_mgr.v_prop_vals_data_typ_ref.DELETE;
350 cz_pb_mgr.v_prop_vals_data_num_ref.DELETE;
351 cz_pb_mgr.v_prop_vals_intl_text_ref.DELETE;
352 v_prop_vals_def_num_value_ref.DELETE;
353 END IF;
354 ELSIF(p_table_name = 'cz_item_masters')
355 THEN
356 IF (p_table_type = 'tbl')
357 THEN
358 cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
359 cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
360 cz_pb_mgr.v_item_masters_tbl.DELETE;
361 cz_pb_mgr.v_item_types_tbl.DELETE;
362 cz_pb_mgr.v_item_prop_id_tbl.DELETE;
363 cz_pb_mgr.v_item_prop_type_tbl.DELETE;
364 cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
365 cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
366 cz_pb_mgr.v_it_prop_value_tbl.DELETE;
367 ELSIF(p_table_type = 'ref')
368 THEN
369 cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
370 cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
371 cz_pb_mgr.v_item_masters_ref.DELETE;
372 cz_pb_mgr.v_item_types_ref.DELETE;
373 cz_pb_mgr.v_item_prop_id_ref.DELETE;
374 cz_pb_mgr.v_item_prop_type_ref.DELETE;
375 cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
376 cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
377 cz_pb_mgr.v_it_prop_value_ref.DELETE;
378 cz_pb_mgr.v_remote_prop_ref.DELETE;
379 cz_pb_mgr.v_property_record_ref.DELETE;
380 cz_pb_mgr.v_type_property_record_ref.DELETE;
381 cz_pb_mgr.v_type_record_ref.DELETE;
382 END IF;
383 ELSIF(p_table_name = 'cz_rule_folders')
384 THEN
385 IF (p_table_type = 'ref')
386 THEN
387 cz_pb_mgr.v_cz_folders_id_old_ref.DELETE;
388 cz_pb_mgr.v_cz_folders_id_new_ref.DELETE;
389 cz_pb_mgr.v_cz_folders_id_idx_ref.DELETE;
390 cz_pb_mgr.v_cz_folders_pf_id_ref.DELETE;
391 cz_pb_mgr.v_cz_folders_pj_id_ref.DELETE;
392 cz_pb_mgr.v_cz_folders_eff_ref.DELETE;
393 cz_pb_mgr.v_cz_folders_orig_ref.DELETE;
394 cz_pb_mgr.v_cz_folders_obj_ref.DELETE;
395 ELSIF(p_table_type = 'tbl')
396 THEN
397 cz_pb_mgr.v_cz_folders_id_old_tbl.DELETE;
398 cz_pb_mgr.v_cz_folders_id_new_tbl.DELETE;
399 END IF;
400 ELSIF(p_table_name = 'cz_expression_nodes')
401 THEN
402 IF (p_table_type = 'tbl')
403 THEN
404 cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.DELETE;
405 cz_pb_mgr.v_cz_enodes_enode_id_old_tbl.DELETE;
406 cz_pb_mgr.v_cz_enodes_expr_id_tbl.DELETE;
407 cz_pb_mgr.v_cz_enodes_psnode_id_tbl.DELETE;
408 cz_pb_mgr.v_cz_enodes_gcol_id_tbl.DELETE;
409 cz_pb_mgr.v_cz_enodes_pexpr_id_tbl.DELETE;
410 cz_pb_mgr.v_cz_enodes_mrefl_id_tbl.DELETE;
411 cz_pb_mgr.v_cz_enodes_rule_id_tbl.DELETE;
412 cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl.DELETE;
413 cz_pb_mgr.v_cz_enodes_par_sig_id_tbl.DELETE;
414 cz_pb_mgr.v_cz_enodes_prop_id_tbl.delete;
415 ELSIF(p_table_type = 'ref')
416 THEN
417 cz_pb_mgr.v_cz_enodes_enode_id_old_ref.DELETE;
418 cz_pb_mgr.v_cz_enodes_enode_id_idx_ref.DELETE;
419 cz_pb_mgr.v_cz_enodes_enode_id_new_ref.DELETE;
420 cz_pb_mgr.v_cz_enodes_psnode_id_ref.DELETE;
421 cz_pb_mgr.v_cz_enodes_gcol_id_ref.DELETE;
422 cz_pb_mgr.v_cz_enodes_pexpr_id_ref.DELETE;
423 cz_pb_mgr.v_cz_enodes_mrefl_id_ref.DELETE;
424 cz_pb_mgr.v_cz_enodes_rule_id_ref.DELETE;
425 cz_pb_mgr.v_cz_enodes_arg_sig_id_ref.DELETE;
426 cz_pb_mgr.v_cz_enodes_par_sig_id_ref.DELETE;
427 cz_pb_mgr.v_cz_expr_sig_ref.DELETE;
428 cz_pb_mgr.v_cz_enodes_prop_id_ref.delete;
429 END IF;
430 ELSIF(p_table_name = 'cz_rules') THEN
431 IF (p_table_type = 'ref') THEN
432 cz_pb_mgr.v_cz_rules_rule_id_old_ref.DELETE;
433 cz_pb_mgr.v_cz_rules_rule_id_new_ref.DELETE;
434 cz_pb_mgr.v_cz_rules_persistent_id_ref.DELETE;
435 cz_pb_mgr.v_cz_rules_rule_id_idx_ref.DELETE;
436 cz_pb_mgr.v_cz_rules_rf_id_ref.DELETE;
437 cz_pb_mgr.v_cz_rules_proj_id_ref.DELETE;
438 cz_pb_mgr.v_cz_rules_comp_id_ref.DELETE;
439 cz_pb_mgr.v_cz_rules_ant_id_ref.DELETE;
440 cz_pb_mgr.v_cz_rules_con_id_ref.DELETE;
441 cz_pb_mgr.v_cz_rules_rea_id_ref.DELETE;
442 cz_pb_mgr.v_cz_rules_eff_id_ref.DELETE;
443 cz_pb_mgr.v_cz_rules_unmsg_id_ref.DELETE;
444 cz_pb_mgr.v_cz_rules_expl_ref.DELETE;
445 cz_pb_mgr.v_cz_rules_sig_ref.DELETE;
446 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
447 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
448 cz_pb_mgr.v_cz_rules_obj_ref.DELETE;
449 cz_pb_mgr.v_cz_rules_sig_idx_ref.DELETE;
450 cz_pb_mgr.v_cz_rules_ui_ref.DELETE;
451 END IF;
452 ELSIF(p_table_name = 'cz_des_chart_features')
456 cz_pb_mgr.v_cz_des_feature_id_old_ref.DELETE;
453 THEN
454 IF (p_table_type = 'ref')
455 THEN
457 cz_pb_mgr.v_cz_des_feature_id_new_ref.DELETE;
458 cz_pb_mgr.v_cz_des_feature_rid_new_ref.DELETE;
459 cz_pb_mgr.v_cz_des_feature_rule_id_ref.DELETE;
460 cz_pb_mgr.v_cz_des_feature_mrefl_id_ref.DELETE;
461 cz_pb_mgr.v_cz_des_feature_ft_typ_ref.DELETE;
462 END IF;
463 ELSIF(p_table_name = 'cz_des_chart_cells')
464 THEN
465 IF (p_table_type = 'ref')
466 THEN
467 cz_pb_mgr.v_cz_des_cells_rule_id_new_ref.DELETE;
468 cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.DELETE;
469 cz_pb_mgr.v_cz_des_cells_sf_id_ref.DELETE;
470 cz_pb_mgr.v_cz_des_cells_sopt_id_ref.DELETE;
471 cz_pb_mgr.v_cz_des_cells_popt_id_ref.DELETE;
472 cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.DELETE;
473 END IF;
474 ELSIF(p_table_name = 'cz_lce_headers')
475 THEN
476 cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
477 cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
478 cz_pb_mgr.v_cz_intl_text_idx_ref.DELETE;
479 cz_pb_mgr.v_cz_intl_unmsg_idx_ref.DELETE;
480 cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
481 cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
482 cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
483 cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
484 ELSIF(p_table_name = 'cz_lce_load_specs')
485 THEN
486 cz_pb_mgr.v_specs_net_type_ref.DELETE;
487 cz_pb_mgr.v_specs_attach_expl_id_ref.DELETE;
488 cz_pb_mgr.v_specs_lce_header_id_ref.DELETE;
489 cz_pb_mgr.v_specs_required_expl_id_ref.DELETE;
490 cz_pb_mgr.v_specs_attach_comp_id_ref.DELETE;
491 cz_pb_mgr.v_specs_model_id_ref.DELETE;
492 cz_pb_mgr.v_specs_alias_name_ref.DELETE;
493 END IF;
494 EXCEPTION
495 WHEN OTHERS
496 THEN
497 x_status := PUBLICATION_ERROR;
498 RAISE;
499 END;
500
501 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
502 ------error and log messages are trapped
503 PROCEDURE error_msg_populate(p_msg VARCHAR2, p_caller VARCHAR2, p_code NUMBER)
504 AS
505 record_count PLS_INTEGER := 0;
506 BEGIN
507 record_count := cz_pb_mgr.v_msg_tbl.COUNT + 1;
508 cz_pb_mgr.v_msg_tbl(record_count).msg_text := LTRIM(RTRIM(SUBSTR(p_msg, 1, 2000)));
509 cz_pb_mgr.v_msg_tbl(record_count).called_proc := p_caller;
510 cz_pb_mgr.v_msg_tbl(record_count).sql_code := pbdebug;
511 EXCEPTION
512 WHEN OTHERS
513 THEN
514 cz_pb_mgr.v_err_message := 'Error in populating messages: ' || SQLERRM;
515 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
516 END error_msg_populate;
517
518 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
519 --------------sequence no generator function
520 FUNCTION sequence_generate(seq_const PLS_INTEGER, seq_name VARCHAR2, p_oraclesequenceincr NUMBER)
521 RETURN NUMBER
522 AS
523 seq_cv ref_cursor;
524 l_sequence_gen NUMBER;
525
526 cz_pb_no_incrementor EXCEPTION;
527 BEGIN
528
529 IF(p_oraclesequenceincr = 0)THEN
530 cz_pb_mgr.v_err_message := 'The sequence incrementor cannot be 0.';
531 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', 70001);
532 RAISE cz_pb_no_incrementor;
533 END IF;
534
535 IF (cz_pb_mgr.v_sequence_count.EXISTS(seq_const))
536 THEN
537 l_sequence_gen := cz_pb_mgr.v_sequence_count(seq_const) + 1;
538 ELSE
539 l_sequence_gen := 0; -- Will fall into this statement only for a New session
540 END IF;
541
542 -- We will grab a new sequence from the sequencer only in case of
543 -- 1. New session OR
544 -- 2. If the running sequence count has reached the last sequence in the block
545 IF (l_sequence_gen = 0 OR(l_sequence_gen = cz_pb_mgr.v_next_sequence_gen(seq_const)))
546 THEN
547 BEGIN
548 OPEN seq_cv FOR 'SELECT ' || seq_name || ' FROM dual';
549
550 LOOP
551 FETCH seq_cv
552 INTO l_sequence_gen;
553
554 EXIT WHEN seq_cv%NOTFOUND;
555 END LOOP;
556
557 CLOSE seq_cv;
558 EXCEPTION
559 WHEN OTHERS
560 THEN
561 cz_pb_mgr.v_err_message := 'Error in getting the next sequence value : ' || SQLERRM;
562 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
563 RAISE;
564 END;
565
566 cz_pb_mgr.v_next_sequence_gen(seq_const) := l_sequence_gen + p_oraclesequenceincr;
567 END IF;
568
569 cz_pb_mgr.v_sequence_count(seq_const) := l_sequence_gen;
570 RETURN l_sequence_gen;
571 EXCEPTION
572 WHEN OTHERS THEN
573 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
574 RAISE;
575 END sequence_generate;
576
577 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
578 ----update orig_sys_ref of cz_localized_texts to NULL
579 PROCEDURE update_localized_texts
580 AS
581 BEGIN
582 IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
583 THEN
584 EXECUTE IMMEDIATE 'BEGIN'
588 || 'LOOP'
585 || ' '
586 || 'FOR I IN cz_pb_mgr.v_cz_intl_text_new_ref.FIRST..cz_pb_mgr.v_cz_intl_text_new_ref.LAST'
587 || ' '
589 || ' '
590 || 'UPDATE cz_localized_texts'
591 || cz_pb_mgr.v_db_link
592 || ' t'
593 || ' '
594 || 'SET t.orig_sys_ref = NULL'
595 || ' '
596 || 'WHERE t.intl_text_id = cz_pb_mgr.v_cz_intl_text_new_ref(i)'
597 || ' '
598 || 'AND t.orig_sys_ref IS NOT NULL;'
599 || ' '
600 || 'END LOOP;'
601 || ' '
602 || 'EXCEPTION'
603 || ' '
604 || 'WHEN OTHERS THEN'
605 || ' '
606 || 'ROLLBACK;'
607 || ' '
608 || 'END;';
609
610 COMMIT;
611 END IF;
612 EXCEPTION
613 WHEN OTHERS
614 THEN
615 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_localized_texts', 'SQLERRM', SQLERRM);
616 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDLOCALTEXT', SQLCODE);
617 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
618 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
619 RAISE;
620 END;
621
622 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
623 -- id_type: null means all input ids not seeded nor from special fields, so have
624 -- to be resolved; not null implies an id in the array may or may not be resolved,
625 -- depending on the id value and its type (e.g., seeded, special type/value).
626 -- ignore id mapping failure here for a. 'seeded' ids b. ui rules' rule_folder_id
627 -- because it is useless (and because it may have a non-zero value) c. explicit
628 -- compatability rule's primary opt id (not real fks) d. reference id and component_id
629 -- because there are updates on them after new record insertion e. expression nodes'
630 -- ps_node_id because node could be deleted f. ui node's ui_node_ref_id because they
631 -- are specially handled after insertion (or obsolete anyway)
632 PROCEDURE resolve_ids(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
633 resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref,
634 array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
635 resolving_id IN VARCHAR2,
636 id_type IN VARCHAR2 DEFAULT NULL
637 )
638 IS
639 l_use_old_id BOOLEAN;
640 BEGIN
641 IF cz_pb_mgr.v_status_code=PUBLICATION_ERROR OR array_to_resolve.COUNT=0 THEN RETURN; END IF;
642
643 FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
644 LOOP
645 BEGIN
646 IF array_to_resolve(j) IS NOT NULL THEN
647 resolved_array(j) := array_of_new_keys(array_to_resolve(j));
648 END IF;
649 EXCEPTION
650 WHEN NO_DATA_FOUND THEN
651 IF array_to_resolve(j) = 0 THEN
652 IF cz_pb_mgr.v_session_parameter = pub_model THEN
653 resolved_array(j) := 1;
654 ELSE
655 resolved_array(j) := 0;
656 END IF;
657 ELSE
658 IF id_type IS NULL THEN
659 l_use_old_id := FALSE;
660 ELSE
661 l_use_old_id := (id_type=FLD_IGNORE_NOW OR
662 id_type=ENTITY_TYPE_UCT AND array_to_resolve(j)<NONSEED_UCT_MIN_ID OR
663 id_type=ENTITY_TYPE_UMT AND array_to_resolve(j)<NONSEED_UMT_MIN_ID OR
664 id_type=ENTITY_TYPE_SIGNATURE AND array_to_resolve(j)<NONSEED_SIGN_MIN_ID OR
665 id_type=ENTITY_TYPE_RULE AND array_to_resolve(j)<NONSEED_RULE_MIN_ID OR
666 id_type=ENTITY_TYPE_PROPERTY AND array_to_resolve(j)<NONSEED_PROP_MIN_ID OR
667 id_type=FLD_PSN_REFERENCE_ID AND
668 (cz_pb_mgr.v_models_not_to_be_exported.FIRST IS NOT NULL OR
669 cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES') OR
670 id_type=FLD_RULE_COMPONENT_ID AND cz_pb_mgr.v_session_parameter=model_copy AND cz_pb_mgr.copy_root_only='YES');
671 END IF;
672 IF l_use_old_id THEN
673 resolved_array(j) := array_to_resolve(j);
674 ELSE
675 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
676 cz_pb_mgr.v_err_message := 'Unable to resolve '||id_type||' id ('||resolving_id||'): '||to_char(array_to_resolve(j));
677 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
678 RAISE;
679 END IF;
680 END IF;
681 END;
682 END LOOP;
683 EXCEPTION
684 WHEN OTHERS THEN
685 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
686 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
687 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
688 cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
689 RAISE;
690 END resolve_ids;
691
692 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
696 id_type IN VARCHAR2 DEFAULT NULL)
693 PROCEDURE resolve_ids(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
694 array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
695 resolving_id IN VARCHAR2,
697 IS
698 BEGIN
699 resolve_ids(array_to_resolve,array_to_resolve,array_of_new_keys,resolving_id,id_type);
700 END resolve_ids;
701
702 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
703 -------procedure that resolves ids via single index keys and one additional array
704 PROCEDURE resolve_tmpl_ui_defs(array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref,
705 resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref,
706 ui_templ_id_tbl IN OUT NOCOPY cz_pb_mgr.t_ref,
707 array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
708 resolving_id IN VARCHAR2
709 )
710 IS
711
712 l_seeded_flag VARCHAR2(1);
713
714 BEGIN
715
716 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
717 IF (array_to_resolve.COUNT > 0) THEN
718 FOR J IN array_to_resolve.FIRST..array_to_resolve.LAST
719 LOOP
720 BEGIN
721 IF (array_to_resolve(j) IS NOT NULL) THEN
722 resolved_array(j) := array_of_new_keys(array_to_resolve(j));
723 END IF;
724 EXCEPTION
725 WHEN NO_DATA_FOUND THEN
726 IF (array_to_resolve(j) = 0 AND(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)) THEN
727
728 IF NOT(ui_templ_id_tbl(j)=0 OR ui_templ_id_tbl(j) IS NULL) THEN
729
730 SELECT seeded_flag INTO l_seeded_flag FROM CZ_UI_TEMPLATES
731 WHERE template_id=ui_templ_id_tbl(j) AND ui_def_id=0;
732
733 IF l_seeded_flag='1' THEN
734 resolved_array(j) := 0;
735 ELSE
736 resolved_array(j) := 1;
737 END IF;
738
739 END IF;
740
741 ELSE
742 resolved_array(j) := array_to_resolve(j);
743 END IF;
744 END;
745 END LOOP;
746 END IF;
747 END IF;
748
749 EXCEPTION
750 WHEN OTHERS THEN
751 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM',SQLERRM);
752 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.RESOLVEIDS',SQLCODE);
753 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
754 cz_pb_mgr.v_sql_err_msg := substr(SQLERRM,1,2000);
755 END resolve_tmpl_ui_defs;
756 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
757 PROCEDURE resolve_tmpl_ui_defs(
758 p_array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
759 ,p_templ_array IN OUT NOCOPY cz_pb_mgr.t_ref
760 ,p_table_name IN VARCHAR2
761 )
762 IS
763 BEGIN
764 IF (p_array_to_resolve.COUNT > 0)
765 THEN
766 FOR i IN p_array_to_resolve.FIRST .. p_array_to_resolve.LAST
767 LOOP
768 BEGIN
769 IF ((p_array_to_resolve(i) IS NOT NULL) AND(p_templ_array(i) IS NOT NULL))
770 THEN
771 IF ((p_array_to_resolve(i) = 0))
772 THEN
773 IF ( (NOT cz_pb_mgr.g_ui_templates_idx_temp_ref.EXISTS(p_templ_array(i)))
774 OR (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
775 )
776 THEN
777 p_array_to_resolve(i) := 0;
778 ELSE
779 p_array_to_resolve(i) := 1;
780 END IF;
781 END IF;
782 ELSE
783 BEGIN
784 p_array_to_resolve(i) := cz_pb_mgr.v_cz_ui_defs_idx_ref(p_array_to_resolve(i));
785 EXCEPTION
786 WHEN OTHERS
787 THEN
788 NULL;
789 END;
790 END IF;
791 EXCEPTION
792 WHEN NO_DATA_FOUND
793 THEN
794 p_array_to_resolve(i) := 0;
795 END;
796 END LOOP;
797 END IF;
798 EXCEPTION
799 WHEN OTHERS
800 THEN
801 cz_pb_mgr.v_err_message := 'Error in resolving template ui def id of: ' || p_table_name || ' : ' || SQLERRM;
802 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'RESOLVETEMPLUIDEFS', SQLCODE);
803 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
804 RAISE;
805 END resolve_tmpl_ui_defs;
806 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
807 PROCEDURE resolve_intl_texts(
808 array_to_resolve IN OUT NOCOPY cz_pb_mgr.t_ref
809 ,array_of_new_keys IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
810 ,resolving_id IN VARCHAR2
811 )
812 IS
813 BEGIN
814 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
815 THEN
816 IF (array_to_resolve.COUNT > 0)
817 THEN
818 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
819 LOOP
820 BEGIN
821 IF (array_to_resolve(j) IS NOT NULL)
822 THEN
826 WHEN NO_DATA_FOUND
823 array_to_resolve(j) := array_of_new_keys(array_to_resolve(j));
824 END IF;
825 EXCEPTION
827 THEN
828 IF (array_to_resolve(j) > 1000)
829 THEN
830 cz_pb_mgr.v_err_message :=
831 'Resolution error for: ' || resolving_id || ' : ' || TO_CHAR(array_to_resolve(j)) || ' : '
832 || SQLERRM;
833 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
834 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
835 RAISE;
836 END IF;
837 END;
838 END LOOP;
839 END IF;
840 END IF;
841 EXCEPTION
842 WHEN OTHERS
843 THEN
844 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
845 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
846 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
847 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
848 END resolve_intl_texts;
849
850 ------------------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
851 PROCEDURE insert_into_item_tables(
852 table_name IN VARCHAR2
853 ,primary_key IN VARCHAR2
854 ,db_link IN VARCHAR2
855 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
856 ,plsql_table_name IN VARCHAR2
857 ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
858 )
859 AS
860 v_cursor NUMBER;
861 v_numrows NUMBER;
862 v_insertstring VARCHAR2(10000);
863 current_column VARCHAR2(128);
864 v_db_link VARCHAR2(128);
865 v_last NUMBER;
866 l_len NUMBER;
867
868 CURSOR col_name_cur(par_table_name VARCHAR2)
869 IS
870 SELECT column_name
871 FROM all_tab_columns
872 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
873
874 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
875 INDEX BY BINARY_INTEGER;
876
877 col_list col_name_table;
878 i BINARY_INTEGER := 1;
879 match_found BOOLEAN;
880 BEGIN
881 IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
882 THEN
883 v_db_link := db_link;
884 cz_pb_mgr.v_insert_table_name := table_name;
885
886 BEGIN
887 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || ' LOOP ';
888 v_insertstring := v_insertstring || ' BEGIN insert into ' || table_name || v_db_link || ' (';
889
890 OPEN col_name_cur(table_name);
891
892 LOOP
893 FETCH col_name_cur
894 INTO current_column;
895
896 EXIT WHEN col_name_cur%NOTFOUND;
897 col_list(i) := LTRIM(RTRIM(current_column));
898 i := i + 1;
899 v_insertstring := v_insertstring || current_column || ',';
900 END LOOP;
901
902 CLOSE col_name_cur;
903
904 v_insertstring := RTRIM(v_insertstring, ',');
905 v_insertstring := v_insertstring || ')';
906 v_insertstring := v_insertstring || ' select ';
907
908 IF (col_list.COUNT > 0)
909 THEN
910 FOR j IN col_list.FIRST .. col_list.LAST
911 LOOP
912 match_found := FALSE;
913
914 IF (plsql_table_list.COUNT > 0)
915 THEN
916 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
917 LOOP
918 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
919 THEN
920 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
921 match_found := TRUE;
922 EXIT;
923 END IF;
924 END LOOP;
925 END IF;
926
927 IF (NOT match_found)
928 THEN
929 v_insertstring := v_insertstring || col_list(j) || ',';
930 END IF;
931 END LOOP;
932 END IF;
933
934 v_insertstring := RTRIM(v_insertstring, ',');
935 v_insertstring :=
936 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
937 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
938 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; ';
939 v_insertstring := v_insertstring || ' EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ';
940 v_insertstring := v_insertstring || ' IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_MASTERS'') THEN ';
941 v_insertstring := v_insertstring || ' UPDATE cz_item_masters' || cz_pb_mgr.v_db_link || ' t ';
942 v_insertstring := v_insertstring || ' SET ( ITEM_TYPE_ID,DESC_TEXT,ORIG_SYS_REF,REF_PART_NBR,QUOTEABLE_FLAG,LEAD_TIME ';
946 v_insertstring := v_insertstring || ' FROM cz_item_masters WHERE cz_item_masters.item_id = ' || plsql_table_name || '(m) ';
943 v_insertstring := v_insertstring || ' ,ITEM_STATUS,PRIMARY_UOM_CODE,DELETED_FLAG,DECIMAL_QTY_FLAG) ';
944 v_insertstring := v_insertstring || ' = ( SELECT ITEM_TYPE_ID,DESC_TEXT,orig_sys_ref,REF_PART_NBR, ';
945 v_insertstring := v_insertstring || ' QUOTEABLE_FLAG ,LEAD_TIME,ITEM_STATUS,PRIMARY_UOM_CODE, DELETED_FLAG,DECIMAL_QTY_FLAG ';
947 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'') WHERE t.item_id = ' || plsql_table_name || '(m); ';
948 v_insertstring := v_insertstring || ' ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPES'') THEN ';
949 v_insertstring := v_insertstring || ' UPDATE cz_item_types' || cz_pb_mgr.v_db_link || ' t ';
950 v_insertstring := v_insertstring || ' SET (DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
951 v_insertstring := v_insertstring || ' ,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF) ';
952 v_insertstring := v_insertstring || ' = (SELECT DESC_TEXT,NAME,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04 ';
953 v_insertstring := v_insertstring || ' ,USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,ORIG_SYS_REF ';
954 v_insertstring := v_insertstring || ' FROM cz_item_types WHERE cz_item_types.item_type_id = ' || plsql_table_name || '(m) ';
955 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'') WHERE t.item_type_id = ' || plsql_table_name || '(m); ';
956 v_insertstring := v_insertstring || ' ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_PROPERTIES'') THEN ';
957 v_insertstring := v_insertstring || ' UPDATE cz_properties' || cz_pb_mgr.v_db_link || ' t ';
958 v_insertstring := v_insertstring || ' SET ( PROPERTY_UNIT,DESC_TEXT,NAME,DATA_TYPE,DEF_VALUE,USER_NUM01 ';
959 v_insertstring := v_insertstring || ' ,USER_NUM02,USER_NUM03,USER_NUM04,USER_STR01,USER_STR02,USER_STR03,USER_STR04 ';
960 v_insertstring := v_insertstring || ' ,DELETED_FLAG,EFF_FROM,EFF_TO,ORIG_SYS_REF) = (SELECT PROPERTY_UNIT,DESC_TEXT,';
961 v_insertstring := v_insertstring || ' NAME,DATA_TYPE,DEF_VALUE,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04,';
962 v_insertstring := v_insertstring || ' USER_STR01,USER_STR02,USER_STR03,USER_STR04,DELETED_FLAG,EFF_FROM,';
963 v_insertstring := v_insertstring || ' EFF_TO,ORIG_SYS_REF FROM cz_properties ';
964 v_insertstring := v_insertstring || ' WHERE cz_properties.property_id = ' || plsql_table_name || '(m) ';
965 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'') WHERE t.property_id = ' || plsql_table_name || '(m); ';
966 v_insertstring := v_insertstring || ' END IF; END; END LOOP; COMMIT; END; ';
967
968 EXECUTE IMMEDIATE v_insertstring;
969
970 COMMIT;
971 EXCEPTION
972 WHEN OTHERS
973 THEN
974 ROLLBACK;
975 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
976 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
977 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
978 cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
979 RAISE;
980 END;
981 END IF;
982 EXCEPTION
983 WHEN OTHERS
984 THEN
985 RAISE;
986 END insert_into_item_tables;
987
988 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
989 ----generates new publication id for the target publication
990 PROCEDURE get_new_publication_id(
991 p_old_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
992 ,x_old_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
993 ,x_new_pub_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
994 ,x_old_rem_pb_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
995 ,x_status IN OUT NOCOPY VARCHAR2
996 )
997 AS
998 BEGIN
999 IF (x_status <> PUBLICATION_ERROR)
1000 THEN
1001 IF (cz_pb_mgr.v_server_id <> 0)
1002 THEN
1003 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
1004 , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
1005 ,cz_pb_mgr.v_oraclesequenceincr
1006 )
1007 ,publication_id, remote_publication_id
1008 INTO x_new_pub_id
1009 ,x_old_pb_id, x_old_rem_pb_id
1010 FROM cz_model_publications
1011 WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1012 ELSE
1013 SELECT cz_model_publications_s.NEXTVAL, publication_id, remote_publication_id
1014 INTO x_new_pub_id, x_old_pb_id, x_old_rem_pb_id
1015 FROM cz_model_publications
1016 WHERE cz_model_publications.publication_id = cz_pb_mgr.v_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
1017 END IF;
1018 END IF;
1019 EXCEPTION
1020 WHEN OTHERS
1021 THEN
1022 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
1023 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUB', SQLCODE);
1024 x_status := PUBLICATION_ERROR;
1025 RAISE;
1029 PROCEDURE insert_item_tables(
1026 END get_new_publication_id;
1027
1028 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1030 table_name IN VARCHAR2
1031 ,primary_key1 IN VARCHAR2
1032 ,primary_key2 IN VARCHAR2
1033 ,db_link IN VARCHAR2
1034 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1035 ,plsql_table_name1 IN VARCHAR2
1036 ,plsql_table_name2 IN VARCHAR2
1037 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1038 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1039 )
1040 AS
1041 v_cursor NUMBER;
1042 v_numrows NUMBER;
1043 v_insertstring VARCHAR2(10000);
1044 current_column VARCHAR2(128);
1045 v_db_link VARCHAR2(128);
1046 v_last NUMBER;
1047
1048 CURSOR col_name_cur(par_table_name VARCHAR2)
1049 IS
1050 SELECT column_name
1051 FROM all_tab_columns
1052 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1053
1054 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1055 INDEX BY BINARY_INTEGER;
1056
1057 col_list col_name_table;
1058 i BINARY_INTEGER := 1;
1059 match_found BOOLEAN;
1060 BEGIN
1061 IF ((cz_pb_mgr.v_status_code <> cz_pb_mgr.PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1062 THEN
1063 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1064 cz_pb_mgr.v_insert_table_name := table_name;
1065
1066 BEGIN
1067 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP ';
1068 v_insertstring := v_insertstring || 'BEGIN insert into ' || table_name || v_db_link || ' (';
1069
1070 OPEN col_name_cur(table_name);
1071
1072 LOOP
1073 FETCH col_name_cur
1074 INTO current_column;
1075
1076 EXIT WHEN col_name_cur%NOTFOUND;
1077 col_list(i) := LTRIM(RTRIM(current_column));
1078 i := i + 1;
1079 v_insertstring := v_insertstring || current_column || ',';
1080 END LOOP;
1081
1082 CLOSE col_name_cur;
1083
1084 v_insertstring := RTRIM(v_insertstring, ',');
1085 v_insertstring := v_insertstring || ')';
1086 v_insertstring := v_insertstring || ' select ';
1087
1088 IF (col_list.COUNT > 0)
1089 THEN
1090 FOR j IN col_list.FIRST .. col_list.LAST
1091 LOOP
1092 match_found := FALSE;
1093
1094 IF (plsql_table_list.COUNT > 0)
1095 THEN
1096 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1097 LOOP
1098 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1099 THEN
1100 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1101 match_found := TRUE;
1102 EXIT;
1103 END IF;
1104 END LOOP;
1105 END IF;
1106
1107 IF (NOT match_found)
1108 THEN
1109 v_insertstring := v_insertstring || col_list(j) || ',';
1110 END IF;
1111 END LOOP;
1112 END IF;
1113
1114 v_insertstring := RTRIM(v_insertstring, ',');
1115 v_insertstring :=
1116 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1117 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1118 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1119 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; ';
1120 v_insertstring := v_insertstring || ' EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ';
1121 v_insertstring := v_insertstring || ' IF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_TYPE_PROPERTIES'') THEN ';
1122 v_insertstring := v_insertstring || ' UPDATE cz_item_type_properties' || cz_pb_mgr.v_db_link || ' SET DELETED_FLAG = ''0'' ';
1123 v_insertstring := v_insertstring || ' WHERE ITEM_TYPE_ID = ' || plsql_table_name1 || '(m) ';
1124 v_insertstring := v_insertstring || ' AND PROPERTY_ID = ' || plsql_table_name2 || '(m); ';
1125 v_insertstring := v_insertstring || ' ELSIF (UPPER(cz_pb_mgr.v_insert_table_name) = ''CZ_ITEM_PROPERTY_VALUES'') THEN ';
1126 v_insertstring :=
1127 v_insertstring || ' UPDATE cz_item_property_values' || cz_pb_mgr.v_db_link || ' t SET ( PROPERTY_VALUE )= (SELECT PROPERTY_VALUE ';
1128 v_insertstring := v_insertstring || ' FROM cz_item_property_values WHERE PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1129 v_insertstring :=
1130 v_insertstring || ' AND ITEM_ID = ' || plsql_table_name2 || '(m) ) WHERE t.PROPERTY_ID = ' || plsql_table_name1 || '(m) ';
1131 v_insertstring := v_insertstring || ' AND t.ITEM_ID = ' || plsql_table_name2 || '(m); ';
1132 v_insertstring := v_insertstring || ' END IF; END; END LOOP; COMMIT; END; ';
1133
1134 EXECUTE IMMEDIATE v_insertstring;
1135
1136 COMMIT;
1137 EXCEPTION
1138 WHEN OTHERS
1139 THEN
1140 ROLLBACK;
1144 cz_pb_mgr.v_status_code := cz_pb_mgr.PUBLICATION_ERROR;
1141 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1142 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', table_name, 'SQLERRM', SQLERRM);
1143 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTO', SQLCODE);
1145 RAISE;
1146 END;
1147 END IF;
1148
1149 COMMIT;
1150 END insert_item_tables;
1151
1152 /* Procedure to insert dev num val for translateable properties of CZ_PROPERTIES into localized texts*/
1153
1154 PROCEDURE mm_ins_def_num_val_in_intl AS
1155 l_sql_str varchar2(4000);
1156 lang_count number;
1157 BEGIN
1158
1159 select count(1) into lang_count from fnd_languages where installed_flag in('I','B');
1160
1161 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.mm_v_tbl_prop_vals_trans_new.COUNT > 0))
1162 THEN
1163
1164 --The mm_intl_text_model_id_ref table contains model_id of intl texts.
1165 -- mm_intl_text_model_id_ref already resolved in mm_sync_properties (put step) using h_devl_prj_by_intl_text map
1166
1167 l_sql_str:='BEGIN'
1168 || ' '
1169 || 'cz_pb_mgr.v_expr_count := 0;'
1170 || ' '
1171 || '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'
1172 || ' '
1173 || 'LOOP'
1174 || ' INSERT INTO cz_localized_texts'
1175 || cz_pb_mgr.v_db_link
1176 || '('
1177 || ' '
1178 || 'intl_text_id,localized_str,ui_def_id,ORIG_SYS_REF,model_id,source_lang,language)'
1179 || ' '
1180 || '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'
1181 || ' '
1182 || ' from cz_localized_texts where intl_text_id=cz_pb_mgr.mm_v_tbl_prop_vals_trans_old(i);'
1183 || ' '
1184 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
1185 || ' '
1186 || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
1187 || ' '
1188 || 'END IF;'
1189 || ' '
1190 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count +'||lang_count||';'
1191 || ' '
1192 || 'END LOOP;'
1193 || ' '
1194 || 'END;';
1195
1196 EXECUTE IMMEDIATE l_sql_str;
1197 END IF;
1198
1199 COMMIT;
1200 EXCEPTION
1201 WHEN OTHERS
1202 THEN
1203 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'CZ_LOCALIZED_TEXTS', 'SQLERRM', SQLERRM);
1204 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_localized_texts', SQLCODE);
1205 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1206 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
1207 RAISE;
1208 END;
1209
1210
1211 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1212 PROCEDURE insert_item_schema
1213 IS
1214 plsql_table_list cz_pb_mgr.col_plsql_table_list;
1215 rec_count NUMBER;
1216 BEGIN
1217 --All reading has been moved to load_data->read_item_schema.
1218
1219 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1220 THEN
1221 mm_v_tbl_sync_prop_vals_num.DELETE;
1222 mm_v_tbl_prop_vals_trans_old.DELETE;
1223 mm_v_tbl_prop_vals_trans_new.DELETE;
1224 mm_v_ht_sync_all_prop_val_num.DELETE;
1225 mm_v_ht_sync_all_prop.DELETE;
1226 mm_v_tbl_sync_prop_type.DELETE;
1227 mm_v_tbl_sync_prop_folder.DELETE;
1228 mm_v_tbl_sync_prop.DELETE;
1229 mm_v_ht_sync_item_type.DELETE;
1230 mm_v_ht_sync_item_type_items.DELETE;
1231 mm_v_ht_sync_items.DELETE;
1232 mm_v_ht_sync_item_prop.DELETE;
1233 mm_v_ht_sync_item_type_prop.DELETE;
1234 mm_v_ht_sync_itmtype_for_prop.DELETE;
1235 mm_v_ht_sync_it_propval_itm.DELETE;
1236 mm_v_ht_sync_ps_propval.DELETE;
1237 mm_v_ht_sync_it_propval.DELETE;
1238 mm_v_ht_eff_set_tbl_t.DELETE;
1239 mm_v_ht_eff_set_tbl_s.DELETE;
1240 mm_v_ht_sync_exist_items.DELETE;
1241 mm_insert_array1.DELETE;
1242 mm_insert_array2.DELETE;
1243 mm_source_array1.DELETE;
1244 mm_source_array2.DELETE;
1245 mm_objtype_array.DELETE;
1246 mm_tgtfldr_array.DELETE;
1247
1248 mm_intl_text_model_id_ref.DELETE;
1249
1250 mm_sync_properties;
1251 mm_sync_itemschema;
1252 mm_migrate_into_ps_prop_vals;
1253 END IF;
1254
1255 -- ITEM TYPES
1256 plsql_table_list.DELETE;
1257 rec_count := 1;
1258 plsql_table_list(rec_count).col_name := 'item_type_id';
1259
1260 -- sure if we need to maintain a table for orig_sys_ref, if needed, we need to maintain a sync table
1261 -- for model migration and then resolve them before updating
1262 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1263 THEN
1264 cz_pb_mgr.mm_insert_array1.DELETE;
1265 cz_pb_mgr.mm_insert_array2.DELETE;
1266 cz_pb_mgr.mm_source_array1.DELETE;
1270 ,cz_pb_mgr.mm_v_ht_sync_item_type
1267 cz_pb_mgr.mm_source_array2.DELETE;
1268 --get only those that need to be migrated
1269 mm_resolve_ids(cz_pb_mgr.v_item_types_new_ref
1271 ,'ITEM TYPES'
1272 ,cz_pb_mgr.mm_insert_array1
1273 ,cz_pb_mgr.mm_source_array1
1274 );
1275 mm_resolve_orig_refs(cz_pb_mgr.v_item_types_new_ref
1276 ,cz_pb_mgr.mm_v_ht_item_types_orig_ref
1277 ,'ITEM TYPES - ORIG SYS REF'
1278 ,cz_pb_mgr.mm_insert_array3
1279 ,cz_pb_mgr.mm_source_array3
1280 );
1281 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1282 rec_count := rec_count + 1;
1283 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1284 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1285 insert_into_item_tables('cz_item_types'
1286 ,'item_type_id'
1287 ,cz_pb_mgr.v_db_link
1288 ,plsql_table_list
1289 ,'cz_pb_mgr.mm_source_array1'
1290 ,cz_pb_mgr.mm_source_array1
1291 );
1292 ELSE
1293 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_new_ref';
1294 rec_count := rec_count + 1;
1295 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1296 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_orig_ref';
1297 insert_into_item_tables('cz_item_types'
1298 ,'item_type_id'
1299 ,cz_pb_mgr.v_db_link
1300 ,plsql_table_list
1301 ,'cz_pb_mgr.v_item_types_new_ref'
1302 ,cz_pb_mgr.v_item_types_new_ref
1303 );
1304 END IF;
1305
1306 --ITEMS
1307 plsql_table_list.DELETE;
1308 rec_count := 1;
1309
1310 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1311 THEN
1312 cz_pb_mgr.mm_insert_array1.DELETE;
1313 cz_pb_mgr.mm_insert_array2.DELETE;
1314 cz_pb_mgr.mm_source_array1.DELETE;
1315 cz_pb_mgr.mm_source_array2.DELETE;
1316 mm_resolve_ids(cz_pb_mgr.v_item_masters_tbl
1317 ,cz_pb_mgr.mm_v_ht_sync_items
1318 ,'ITEMS - ITEM ARRAY'
1319 ,cz_pb_mgr.mm_insert_array1
1320 ,mm_source_array1
1321 );
1322 mm_resolve_ids(cz_pb_mgr.v_item_masters_tbl
1323 ,cz_pb_mgr.mm_v_ht_sync_item_type_items
1324 ,'ITEMS - ITEM TYPE ARRAY'
1325 ,cz_pb_mgr.mm_insert_array2
1326 ,mm_source_array2
1327 );
1328 mm_resolve_orig_refs(cz_pb_mgr.v_item_masters_tbl
1329 ,cz_pb_mgr.mm_v_ht_items_orig_ref
1330 ,'ITEM TYPES - ORIG SYS REF'
1331 ,cz_pb_mgr.mm_insert_array3
1332 ,mm_source_array3
1333 );
1334 plsql_table_list(rec_count).col_name := 'item_id';
1335 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1336 rec_count := rec_count + 1;
1337 plsql_table_list(rec_count).col_name := 'item_type_id';
1338 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1339 rec_count := rec_count + 1;
1340 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1341 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array3';
1342 insert_into_item_tables('cz_item_masters'
1343 ,'item_id'
1344 ,cz_pb_mgr.v_db_link
1345 ,plsql_table_list
1346 ,'cz_pb_mgr.mm_source_array1'
1347 ,cz_pb_mgr.mm_source_array1
1348 );
1349 ELSE
1350 plsql_table_list(rec_count).col_name := 'item_id';
1351 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_masters_tbl';
1352 rec_count := rec_count + 1;
1353 plsql_table_list(rec_count).col_name := 'item_type_id';
1354 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_item_types_tbl';
1355 rec_count := rec_count + 1;
1356 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
1357 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_items_orig_ref';
1358 insert_into_item_tables('cz_item_masters'
1359 ,'item_id'
1360 ,cz_pb_mgr.v_db_link
1361 ,plsql_table_list
1362 ,'cz_pb_mgr.v_item_masters_tbl'
1363 ,cz_pb_mgr.v_item_masters_tbl
1364 );
1365 END IF;
1366
1367 --PROPERTIES (with RP_ENTRIES if model migration)
1368 plsql_table_list.DELETE;
1369 rec_count := 1;
1370
1371 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1372 THEN
1373 cz_pb_mgr.mm_insert_array1.DELETE;
1374 cz_pb_mgr.mm_insert_array2.DELETE;
1375 cz_pb_mgr.mm_objtype_array.DELETE;
1376 cz_pb_mgr.mm_tgtfldr_array.DELETE;
1380 --insert into localized texts:ids which belong to translateable props
1377 cz_pb_mgr.mm_source_array1.DELETE;
1378 cz_pb_mgr.mm_source_array2.DELETE;
1379
1381 mm_ins_def_num_val_in_intl;
1382
1383 mm_resolve_ids_w_rp_entries(cz_pb_mgr.v_remote_prop_ref
1384 ,cz_pb_mgr.mm_v_tbl_sync_prop
1385 ,'PRP'
1386 ,g_migration_tgt_folder_id
1387 ,'PROPERTIES - PROPERTIES AND RP ENTRIES'
1388 ,mm_insert_array1
1389 ,mm_objtype_array
1390 ,mm_tgtfldr_array
1391 ,mm_source_array1
1392 );
1393
1394 --The array cz_pb_mgr.mm_v_tbl_sync_prop_vals_num is a hash table, containing numeric default values,
1395 --hashed by target property_id, so we cannot use it directly in the following block. We need to construct a
1396 --new array that will be in synch with mm_insert_array1. Also, it should be global to be used inside the
1397 --insert_into_item_tables procedure.
1398
1399 FOR i IN 1..cz_pb_mgr.mm_insert_array1.COUNT LOOP
1400
1401 cz_pb_mgr.mm_insert_array2(i) := cz_pb_mgr.mm_v_tbl_sync_prop_vals_num(cz_pb_mgr.mm_insert_array1(i));
1402 END LOOP;
1403
1404 plsql_table_list(rec_count).col_name := 'property_id';
1405 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1406 rec_count:=rec_count+1;
1407
1408 plsql_table_list(rec_count).col_name := 'def_num_value';
1409 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1410
1411 insert_into_item_tables('cz_properties'
1412 ,'property_id'
1413 ,cz_pb_mgr.v_db_link
1414 ,plsql_table_list
1415 ,'cz_pb_mgr.mm_source_array1'
1416 ,cz_pb_mgr.mm_source_array1
1417 );
1418
1419 --insert rp entries as well
1420 plsql_table_list.DELETE;
1421 rec_count := 1;
1422 plsql_table_list(rec_count).col_name := 'object_id';
1423 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1424 rec_count := rec_count + 1;
1425 plsql_table_list(rec_count).col_name := 'object_type';
1426 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_objtype_array';
1427 rec_count := rec_count + 1;
1428 plsql_table_list(rec_count).col_name := 'enclosing_folder';
1429 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_tgtfldr_array';
1430 insert_into_rp_entries('cz_rp_entries'
1431 ,'object_id'
1432 ,'object_type'
1433 ,cz_pb_mgr.v_db_link
1434 ,plsql_table_list
1435 ,'cz_pb_mgr.mm_source_array1'
1436 ,'cz_pb_mgr.mm_objtype_array'
1437 ,cz_pb_mgr.mm_source_array1
1438 ,cz_pb_mgr.mm_objtype_array
1439 );
1440 ELSE
1441 plsql_table_list(rec_count).col_name := 'property_id';
1442 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_remote_prop_ref';
1443 insert_into_item_tables('cz_properties'
1444 ,'property_id'
1445 ,cz_pb_mgr.v_db_link
1446 ,plsql_table_list
1447 ,'cz_pb_mgr.v_remote_prop_ref'
1448 ,cz_pb_mgr.v_remote_prop_ref
1449 );
1450 END IF;
1451
1452 --ITEM TYPE PROPERTIES
1453 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1454 THEN
1455 cz_pb_mgr.mm_insert_array1.DELETE;
1456 cz_pb_mgr.mm_insert_array2.DELETE;
1457 cz_pb_mgr.mm_objtype_array.DELETE;
1458 cz_pb_mgr.mm_tgtfldr_array.DELETE;
1459 cz_pb_mgr.mm_source_array1.DELETE;
1460 cz_pb_mgr.mm_source_array2.DELETE;
1461 mm_resolve_ids(cz_pb_mgr.v_item_prop_id_tbl
1462 ,cz_pb_mgr.mm_v_ht_sync_item_type_prop
1463 ,'ITEM TYPE PROPERTIES - PROP'
1464 ,cz_pb_mgr.mm_insert_array1
1465 ,cz_pb_mgr.mm_source_array1
1466 );
1467 mm_resolve_ids(cz_pb_mgr.v_item_prop_type_tbl
1468 ,cz_pb_mgr.mm_v_ht_sync_itmtype_for_prop
1469 ,'ITEM TYPE PROPERTIES - ITEM TYPE'
1470 ,cz_pb_mgr.mm_insert_array2
1471 ,cz_pb_mgr.mm_source_array2
1472 );
1473 plsql_table_list.DELETE;
1474 rec_count := 1;
1475 plsql_table_list(rec_count).col_name := 'property_id';
1476 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1477 rec_count := rec_count + 1;
1478 plsql_table_list(rec_count).col_name := 'item_type_id';
1479 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1480 insert_item_tables('cz_item_type_properties'
1481 ,'property_id'
1482 ,'item_type_id'
1483 ,cz_pb_mgr.v_db_link
1484 ,plsql_table_list
1488 ,cz_pb_mgr.mm_source_array2
1485 ,'cz_pb_mgr.mm_source_array1'
1486 ,'cz_pb_mgr.mm_source_array2'
1487 ,cz_pb_mgr.mm_source_array1
1489 );
1490 END IF;
1491
1492 --ITEM PROPERTY VALUES
1493 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
1494 THEN
1495 cz_pb_mgr.mm_insert_array1.DELETE;
1496 cz_pb_mgr.mm_insert_array2.DELETE;
1497 cz_pb_mgr.mm_objtype_array.DELETE;
1498 cz_pb_mgr.mm_tgtfldr_array.DELETE;
1499 cz_pb_mgr.mm_source_array1.DELETE;
1500 cz_pb_mgr.mm_source_array2.DELETE;
1501 mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_id_tbl
1502 ,cz_pb_mgr.mm_v_ht_sync_it_propval
1503 ,'IT PROP VAL- PROPERTIES'
1504 ,cz_pb_mgr.mm_insert_array1
1505 ,cz_pb_mgr.mm_source_array1
1506 );
1507 mm_resolve_ids(cz_pb_mgr.v_it_prop_vals_item_tbl
1508 ,cz_pb_mgr.mm_v_ht_sync_it_propval_itm
1509 ,'IT PROP VALS - ITEMS'
1510 ,cz_pb_mgr.mm_insert_array2
1511 ,cz_pb_mgr.mm_source_array2
1512 );
1513 plsql_table_list.DELETE;
1514 rec_count := 1;
1515 plsql_table_list(rec_count).col_name := 'property_id';
1516 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array1';
1517 rec_count := rec_count + 1;
1518 plsql_table_list(rec_count).col_name := 'item_id';
1519 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_insert_array2';
1520 insert_item_tables('cz_item_property_values'
1521 ,'item_id'
1522 ,'property_id'
1523 ,cz_pb_mgr.v_db_link
1524 ,plsql_table_list
1525 ,'cz_pb_mgr.mm_source_array2'
1526 ,'cz_pb_mgr.mm_source_array1'
1527 ,cz_pb_mgr.mm_source_array1
1528 ,cz_pb_mgr.mm_source_array2
1529 );
1530 END IF;
1531 END insert_item_schema;
1532 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1533 PROCEDURE insert_into_rp_entries(
1534 table_name IN VARCHAR2
1535 ,primary_key1 IN VARCHAR2
1536 ,primary_key2 IN VARCHAR2
1537 ,db_link IN VARCHAR2
1538 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1539 ,plsql_table_name1 IN VARCHAR2
1540 ,plsql_table_name2 IN VARCHAR2
1541 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1542 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
1543 )
1544 AS
1545 v_cursor NUMBER;
1546 v_numrows NUMBER;
1547 v_insertstring VARCHAR2(10000);
1548 current_column VARCHAR2(128);
1549 v_db_link VARCHAR2(128);
1550 v_last NUMBER;
1551
1552 CURSOR col_name_cur(par_table_name VARCHAR2)
1553 IS
1554 SELECT column_name
1555 FROM all_tab_columns
1556 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1557
1558 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1559 INDEX BY BINARY_INTEGER;
1560
1561 col_list col_name_table;
1562 i BINARY_INTEGER := 1;
1563 match_found BOOLEAN;
1564 BEGIN
1565 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1566 THEN
1567 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1568 cz_pb_mgr.v_insert_table_name := table_name;
1569
1570 BEGIN
1571 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP ';
1572 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1573
1574 OPEN col_name_cur(table_name);
1575
1576 LOOP
1577 FETCH col_name_cur
1578 INTO current_column;
1579
1580 EXIT WHEN col_name_cur%NOTFOUND;
1581 col_list(i) := LTRIM(RTRIM(current_column));
1582 i := i + 1;
1583 v_insertstring := v_insertstring || current_column || ',';
1584 END LOOP;
1585
1586 CLOSE col_name_cur;
1587
1588 v_insertstring := RTRIM(v_insertstring, ',');
1589 v_insertstring := v_insertstring || ')';
1590 v_insertstring := v_insertstring || ' select ';
1591
1592 IF (col_list.COUNT > 0)
1593 THEN
1594 FOR j IN col_list.FIRST .. col_list.LAST
1595 LOOP
1596 match_found := FALSE;
1597
1598 IF (plsql_table_list.COUNT > 0)
1599 THEN
1600 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1601 LOOP
1602 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1603 THEN
1604 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1605 match_found := TRUE;
1606 EXIT;
1607 END IF;
1608 END LOOP;
1609 END IF;
1610
1611 IF (NOT match_found)
1615 END LOOP;
1612 THEN
1613 v_insertstring := v_insertstring || col_list(j) || ',';
1614 END IF;
1616 END IF;
1617
1618 v_insertstring := RTRIM(v_insertstring, ',');
1619 v_insertstring :=
1620 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1621 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1622 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1623 v_insertstring := v_insertstring || ' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; ';
1624 v_insertstring :=
1625 v_insertstring
1626 || ' EXCEPTION WHEN OTHERS THEN '
1627 || ' '
1628 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1629 || ' '
1630 || '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'');'
1631 || ' '
1632 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1633
1634 EXECUTE IMMEDIATE v_insertstring;
1635
1636 COMMIT;
1637 EXCEPTION
1638 WHEN OTHERS
1639 THEN
1640 ROLLBACK;
1641 RAISE;
1642 END;
1643 END IF;
1644
1645 COMMIT;
1646 END;
1647
1648 ----------------------------------------------------
1649
1650 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
1651 PROCEDURE insert_into_table(
1652 table_name IN VARCHAR2
1653 ,primary_key1 IN VARCHAR2
1654 ,primary_key2 IN VARCHAR2
1655 ,primary_key3 IN VARCHAR2
1656 ,db_link IN VARCHAR2
1657 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1658 ,plsql_table_name1 IN VARCHAR2
1659 ,plsql_table_name2 IN VARCHAR2
1660 ,plsql_table_name3 IN VARCHAR2
1661 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1662 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1663 ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.varchar_type_tbl
1664 )
1665 AS
1666 v_cursor NUMBER;
1667 v_numrows NUMBER;
1668 v_insertstring VARCHAR2(10000);
1669 current_column VARCHAR2(128);
1670 v_db_link VARCHAR2(128);
1671 v_last NUMBER;
1672
1673 CURSOR col_name_cur(par_table_name VARCHAR2)
1674 IS
1675 SELECT column_name
1676 FROM all_tab_columns
1677 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1678
1679 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1680 INDEX BY BINARY_INTEGER;
1681
1682 col_list col_name_table;
1683 i BINARY_INTEGER := 1;
1684 match_found BOOLEAN;
1685 BEGIN
1686 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1687 THEN
1688 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1689 cz_pb_mgr.v_insert_table_name := table_name;
1690
1691 BEGIN
1692 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
1693 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1694
1695 OPEN col_name_cur(table_name);
1696
1697 LOOP
1698 FETCH col_name_cur
1699 INTO current_column;
1700
1701 EXIT WHEN col_name_cur%NOTFOUND;
1702 col_list(i) := LTRIM(RTRIM(current_column));
1703 i := i + 1;
1704 v_insertstring := v_insertstring || current_column || ',';
1705 END LOOP;
1706
1707 CLOSE col_name_cur;
1708
1709 v_insertstring := RTRIM(v_insertstring, ',');
1710 v_insertstring := v_insertstring || ')';
1711 v_insertstring := v_insertstring || ' select ';
1712
1713 IF (col_list.COUNT > 0)
1714 THEN
1715 FOR j IN col_list.FIRST .. col_list.LAST
1716 LOOP
1717 match_found := FALSE;
1718
1719 IF (plsql_table_list.COUNT > 0)
1720 THEN
1721 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1722 LOOP
1723 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1724 THEN
1725 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1726 match_found := TRUE;
1727 EXIT;
1728 END IF;
1729 END LOOP;
1730 END IF;
1731
1732 IF (NOT match_found)
1733 THEN
1734 v_insertstring := v_insertstring || col_list(j) || ',';
1735 END IF;
1736 END LOOP;
1737 END IF;
1738
1739 v_insertstring := RTRIM(v_insertstring, ',');
1740 v_insertstring :=
1744 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1741 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1742 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1743 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
1745 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; ';
1746 v_insertstring :=
1747 v_insertstring
1748 || ' EXCEPTION WHEN OTHERS THEN'
1749 || ' '
1750 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1751 || ' '
1752 || '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'');'
1753 || ' '
1754 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1755
1756 EXECUTE IMMEDIATE v_insertstring;
1757
1758 COMMIT;
1759 EXCEPTION
1760 WHEN OTHERS
1761 THEN
1762 ROLLBACK;
1763 RAISE;
1764 END;
1765 END IF;
1766
1767 COMMIT;
1768 END;
1769
1770 -------------------------------------------------------------------------
1771 PROCEDURE insert_into_table(
1772 table_name IN VARCHAR2
1773 ,primary_key1 IN VARCHAR2
1774 ,primary_key2 IN VARCHAR2
1775 ,primary_key3 IN VARCHAR2
1776 ,db_link IN VARCHAR2
1777 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1778 ,plsql_table_name1 IN VARCHAR2
1779 ,plsql_table_name2 IN VARCHAR2
1780 ,plsql_table_name3 IN VARCHAR2
1781 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1782 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
1783 ,primary_key_plsql_table3 IN OUT NOCOPY cz_pb_mgr.t_ref
1784 )
1785 AS
1786 v_cursor NUMBER;
1787 v_numrows NUMBER;
1788 v_insertstring VARCHAR2(10000);
1789 current_column VARCHAR2(128);
1790 v_db_link VARCHAR2(128);
1791 v_last NUMBER;
1792
1793 CURSOR col_name_cur(par_table_name VARCHAR2)
1794 IS
1795 SELECT column_name
1796 FROM all_tab_columns
1797 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1798
1799 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1800 INDEX BY BINARY_INTEGER;
1801
1802 col_list col_name_table;
1803 i BINARY_INTEGER := 1;
1804 match_found BOOLEAN;
1805 BEGIN
1806 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1807 THEN
1808 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1809 cz_pb_mgr.v_insert_table_name := table_name;
1810
1811 BEGIN
1812 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
1813 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1814
1815 OPEN col_name_cur(table_name);
1816
1817 LOOP
1818 FETCH col_name_cur
1819 INTO current_column;
1820
1821 EXIT WHEN col_name_cur%NOTFOUND;
1822 col_list(i) := LTRIM(RTRIM(current_column));
1823 i := i + 1;
1824 v_insertstring := v_insertstring || current_column || ',';
1825 END LOOP;
1826
1827 CLOSE col_name_cur;
1828
1829 v_insertstring := RTRIM(v_insertstring, ',');
1830 v_insertstring := v_insertstring || ')';
1831 v_insertstring := v_insertstring || ' select ';
1832
1833 IF (col_list.COUNT > 0)
1834 THEN
1835 FOR j IN col_list.FIRST .. col_list.LAST
1836 LOOP
1837 match_found := FALSE;
1838
1839 IF (plsql_table_list.COUNT > 0)
1840 THEN
1841 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1842 LOOP
1843 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1844 THEN
1845 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1846 match_found := TRUE;
1847 EXIT;
1848 END IF;
1849 END LOOP;
1850 END IF;
1851
1852 IF (NOT match_found)
1853 THEN
1854 v_insertstring := v_insertstring || col_list(j) || ',';
1855 END IF;
1856 END LOOP;
1857 END IF;
1858
1859 v_insertstring := RTRIM(v_insertstring, ',');
1860 v_insertstring :=
1861 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1865 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; ';
1862 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1863 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key3 || '=' || plsql_table_name3 || '(m) ';
1864 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1866 v_insertstring :=
1867 v_insertstring
1868 || ' EXCEPTION WHEN OTHERS THEN'
1869 || ' '
1870 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1871 || ' '
1872 || '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'');'
1873 || ' '
1874 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1875
1876 EXECUTE IMMEDIATE v_insertstring;
1877
1878 COMMIT;
1879 EXCEPTION
1880 WHEN OTHERS
1881 THEN
1882 cz_pb_mgr.v_err_message := 'Insert into cz ui page refs: ' || SQLERRM;
1883 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZUIPAGEREFS', SQLCODE);
1884 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
1885 RAISE;
1886 END;
1887 END IF;
1888
1889 COMMIT;
1890 END;
1891
1892 ------------------------------------------------------------
1893 PROCEDURE insert_into_table(
1894 table_name IN VARCHAR2
1895 ,primary_key1 IN VARCHAR2
1896 ,primary_key2 IN VARCHAR2
1897 ,db_link IN VARCHAR2
1898 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
1899 ,plsql_table_name1 IN VARCHAR2
1900 ,plsql_table_name2 IN VARCHAR2
1901 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
1902 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.objtype
1903 )
1904 AS
1905 v_cursor NUMBER;
1906 v_numrows NUMBER;
1907 v_insertstring VARCHAR2(10000);
1908 current_column VARCHAR2(128);
1909 v_db_link VARCHAR2(128);
1910 v_last NUMBER;
1911
1912 CURSOR col_name_cur(par_table_name VARCHAR2)
1913 IS
1914 SELECT column_name
1915 FROM all_tab_columns
1916 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
1917
1918 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
1919 INDEX BY BINARY_INTEGER;
1920
1921 col_list col_name_table;
1922 i BINARY_INTEGER := 1;
1923 match_found BOOLEAN;
1924 BEGIN
1925 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
1926 THEN
1927 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
1928 cz_pb_mgr.v_insert_table_name := table_name;
1929
1930 BEGIN
1931 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
1932 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
1933
1934 OPEN col_name_cur(table_name);
1935
1936 LOOP
1937 FETCH col_name_cur
1938 INTO current_column;
1939
1940 EXIT WHEN col_name_cur%NOTFOUND;
1941 col_list(i) := LTRIM(RTRIM(current_column));
1942 i := i + 1;
1943 v_insertstring := v_insertstring || current_column || ',';
1944 END LOOP;
1945
1946 CLOSE col_name_cur;
1947
1948 v_insertstring := RTRIM(v_insertstring, ',');
1949 v_insertstring := v_insertstring || ')';
1950 v_insertstring := v_insertstring || ' select ';
1951
1952 IF (col_list.COUNT > 0)
1953 THEN
1954 FOR j IN col_list.FIRST .. col_list.LAST
1955 LOOP
1956 match_found := FALSE;
1957
1958 IF (plsql_table_list.COUNT > 0)
1959 THEN
1960 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
1961 LOOP
1962 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
1963 THEN
1964 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
1965 match_found := TRUE;
1966 EXIT;
1967 END IF;
1968 END LOOP;
1969 END IF;
1970
1971 IF (NOT match_found)
1972 THEN
1973 v_insertstring := v_insertstring || col_list(j) || ',';
1974 END IF;
1975 END LOOP;
1976 END IF;
1977
1978 v_insertstring := RTRIM(v_insertstring, ',');
1979 v_insertstring :=
1980 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
1981 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
1985 v_insertstring
1982 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
1983 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; ';
1984 v_insertstring :=
1986 || ' EXCEPTION WHEN OTHERS THEN '
1987 || ' '
1988 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
1989 || ' '
1990 || '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'');'
1991 || ' '
1992 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
1993
1994 EXECUTE IMMEDIATE v_insertstring;
1995
1996 COMMIT;
1997 EXCEPTION
1998 WHEN OTHERS
1999 THEN
2000 ROLLBACK;
2001 RAISE;
2002 END;
2003 END IF;
2004
2005 COMMIT;
2006 END;
2007
2008 ---------------------------------------------------------------------------------
2009 PROCEDURE insert_into_table(
2010 table_name IN VARCHAR2
2011 ,primary_key1 IN VARCHAR2
2012 ,primary_key2 IN VARCHAR2
2013 ,db_link IN VARCHAR2
2014 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2015 ,plsql_table_name1 IN VARCHAR2
2016 ,plsql_table_name2 IN VARCHAR2
2017 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2018 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type
2019 )
2020 AS
2021 v_cursor NUMBER;
2022 v_numrows NUMBER;
2023 v_insertstring VARCHAR2(10000);
2024 current_column VARCHAR2(128);
2025 v_db_link VARCHAR2(128);
2026 v_last NUMBER;
2027
2028 CURSOR col_name_cur(par_table_name VARCHAR2)
2029 IS
2030 SELECT column_name
2031 FROM all_tab_columns
2032 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
2033
2034 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
2035 INDEX BY BINARY_INTEGER;
2036
2037 col_list col_name_table;
2038 i BINARY_INTEGER := 1;
2039 match_found BOOLEAN;
2040 BEGIN
2041 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2042 THEN
2043 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2044 cz_pb_mgr.v_insert_table_name := table_name;
2045
2046 BEGIN
2047 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2048 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2049
2050 OPEN col_name_cur(table_name);
2051
2052 LOOP
2053 FETCH col_name_cur
2054 INTO current_column;
2055
2056 EXIT WHEN col_name_cur%NOTFOUND;
2057 col_list(i) := LTRIM(RTRIM(current_column));
2058 i := i + 1;
2059 v_insertstring := v_insertstring || current_column || ',';
2060 END LOOP;
2061
2062 CLOSE col_name_cur;
2063
2064 v_insertstring := RTRIM(v_insertstring, ',');
2065 v_insertstring := v_insertstring || ')';
2066 v_insertstring := v_insertstring || ' select ';
2067
2068 IF (col_list.COUNT > 0)
2069 THEN
2070 FOR j IN col_list.FIRST .. col_list.LAST
2071 LOOP
2072 match_found := FALSE;
2073
2074 IF (plsql_table_list.COUNT > 0)
2075 THEN
2076 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2077 LOOP
2078 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2079 THEN
2080 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2081 match_found := TRUE;
2082 EXIT;
2083 END IF;
2084 END LOOP;
2085 END IF;
2086
2087 IF (NOT match_found)
2088 THEN
2089 v_insertstring := v_insertstring || col_list(j) || ',';
2090 END IF;
2091 END LOOP;
2092 END IF;
2093
2094 v_insertstring := RTRIM(v_insertstring, ',');
2095 v_insertstring :=
2096 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2097 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2098 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2099 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; ';
2100 v_insertstring :=
2101 v_insertstring
2102 || ' EXCEPTION WHEN OTHERS THEN '
2103 || ' '
2107 || ' '
2104 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2105 || ' '
2106 || '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'');'
2108 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2109
2110 EXECUTE IMMEDIATE v_insertstring;
2111
2112 COMMIT;
2113 EXCEPTION
2114 WHEN OTHERS
2115 THEN
2116 ROLLBACK;
2117 RAISE;
2118 END;
2119 END IF;
2120
2121 COMMIT;
2122 END;
2123
2124 ----------------------------------------------------
2125 PROCEDURE insert_into_table(
2126 table_name IN VARCHAR2
2127 ,primary_key1 IN VARCHAR2
2128 ,primary_key2 IN VARCHAR2
2129 ,db_link IN VARCHAR2
2130 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2131 ,plsql_table_name1 IN VARCHAR2
2132 ,plsql_table_name2 IN VARCHAR2
2133 ,primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref
2134 ,primary_key_plsql_table2 IN OUT NOCOPY cz_pb_mgr.t_ref
2135 )
2136 AS
2137 v_cursor NUMBER;
2138 v_numrows NUMBER;
2139 v_insertstring VARCHAR2(10000);
2140 current_column VARCHAR2(128);
2141 v_db_link VARCHAR2(128);
2142 v_last NUMBER;
2143
2144 CURSOR col_name_cur(par_table_name VARCHAR2)
2145 IS
2146 SELECT column_name
2147 FROM all_tab_columns
2148 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
2149
2150 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
2151 INDEX BY BINARY_INTEGER;
2152
2153 col_list col_name_table;
2154 i BINARY_INTEGER := 1;
2155 match_found BOOLEAN;
2156 BEGIN
2157 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table1.COUNT > 0))
2158 THEN
2159 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2160 cz_pb_mgr.v_insert_table_name := table_name;
2161
2162 BEGIN
2163 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table1.FIRST || '..' || primary_key_plsql_table1.LAST || ' LOOP BEGIN ';
2164 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2165
2166 OPEN col_name_cur(table_name);
2167
2168 LOOP
2169 FETCH col_name_cur
2170 INTO current_column;
2171
2172 EXIT WHEN col_name_cur%NOTFOUND;
2173 col_list(i) := LTRIM(RTRIM(current_column));
2174 i := i + 1;
2175 v_insertstring := v_insertstring || current_column || ',';
2176 END LOOP;
2177
2178 CLOSE col_name_cur;
2179
2180 v_insertstring := RTRIM(v_insertstring, ',');
2181 v_insertstring := v_insertstring || ')';
2182 v_insertstring := v_insertstring || ' select ';
2183
2184 IF (col_list.COUNT > 0)
2185 THEN
2186 FOR j IN col_list.FIRST .. col_list.LAST
2187 LOOP
2188 match_found := FALSE;
2189
2190 IF (plsql_table_list.COUNT > 0)
2191 THEN
2192 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2193 LOOP
2194 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2195 THEN
2196 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2197 match_found := TRUE;
2198 EXIT;
2199 END IF;
2200 END LOOP;
2201 END IF;
2202
2203 IF (NOT match_found)
2204 THEN
2205 v_insertstring := v_insertstring || col_list(j) || ',';
2206 END IF;
2207 END LOOP;
2208 END IF;
2209
2210 v_insertstring := RTRIM(v_insertstring, ',');
2211 v_insertstring :=
2212 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key1 || ' = ' || plsql_table_name1 || '(m) ';
2213 v_insertstring := v_insertstring || ' AND ' || table_name || '.' || primary_key2 || '=' || plsql_table_name2 || '(m) ';
2214 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2215 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; ';
2216 v_insertstring :=
2217 v_insertstring
2218 || ' EXCEPTION WHEN DUP_VAL_ON_INDEX THEN NULL; WHEN OTHERS THEN'
2219 || ' '
2220 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2221 || ' '
2222 || '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'');'
2223 || ' '
2224 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2225
2226 EXECUTE IMMEDIATE v_insertstring;
2230 WHEN OTHERS
2227
2228 COMMIT;
2229 EXCEPTION
2231 THEN
2232 ROLLBACK;
2233 cz_pb_mgr.v_err_message := 'Insert into ' || table_name || ': ' || SQLERRM;
2234 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, table_name, SQLCODE);
2235 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2236 RAISE;
2237 END;
2238 END IF;
2239
2240 COMMIT;
2241 END;
2242
2243 -----------------------------------------------------
2244 -------procedure that inserts the records into target db
2245 -------of the table referred by the table_name
2246 PROCEDURE insert_into_table(
2247 table_name IN VARCHAR2
2248 ,primary_key IN VARCHAR2
2249 ,db_link IN VARCHAR2
2250 ,plsql_table_list IN cz_pb_mgr.col_plsql_table_list
2251 ,plsql_table_name IN VARCHAR2
2252 ,primary_key_plsql_table IN OUT NOCOPY cz_pb_mgr.t_ref
2253 )
2254 AS
2255 v_cursor NUMBER;
2256 v_numrows NUMBER;
2257 v_insertstring VARCHAR2(10000);
2258 current_column VARCHAR2(128);
2259 v_db_link VARCHAR2(128);
2260 v_last NUMBER;
2261
2262 CURSOR col_name_cur(par_table_name VARCHAR2)
2263 IS
2264 SELECT column_name
2265 FROM all_tab_columns
2266 WHERE table_name = UPPER(LTRIM(RTRIM(par_table_name))) AND owner = 'CZ';
2267
2268 TYPE col_name_table IS TABLE OF all_tab_columns.column_name%TYPE
2269 INDEX BY BINARY_INTEGER;
2270
2271 col_list col_name_table;
2272 i BINARY_INTEGER := 1;
2273 match_found BOOLEAN;
2274 BEGIN
2275
2276 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(primary_key_plsql_table.COUNT > 0))
2277 THEN
2278 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
2279 cz_pb_mgr.v_insert_table_name := table_name;
2280
2281 BEGIN
2282 v_insertstring := 'BEGIN FOR M IN ' || primary_key_plsql_table.FIRST || '..' || primary_key_plsql_table.LAST || ' LOOP BEGIN ';
2283 v_insertstring := v_insertstring || ' insert into ' || table_name || v_db_link || ' (';
2284
2285 OPEN col_name_cur(table_name);
2286
2287 LOOP
2288 FETCH col_name_cur
2289 INTO current_column;
2290
2291 EXIT WHEN col_name_cur%NOTFOUND;
2292 col_list(i) := LTRIM(RTRIM(current_column));
2293 i := i + 1;
2294 v_insertstring := v_insertstring || current_column || ',';
2295 END LOOP;
2296
2297 CLOSE col_name_cur;
2298
2299 v_insertstring := RTRIM(v_insertstring, ',');
2300 v_insertstring := v_insertstring || ')';
2301 v_insertstring := v_insertstring || ' select ';
2302
2303 IF (col_list.COUNT > 0)
2304 THEN
2305 FOR j IN col_list.FIRST .. col_list.LAST
2306 LOOP
2307 match_found := FALSE;
2308
2309 IF (plsql_table_list.COUNT > 0)
2310 THEN
2311 FOR k IN plsql_table_list.FIRST .. plsql_table_list.LAST
2312 LOOP
2313 IF (UPPER(col_list(j)) = UPPER(plsql_table_list(k).col_name))
2314 THEN
2315 v_insertstring := v_insertstring || plsql_table_list(k).table_name || '(m),';
2316 match_found := TRUE;
2317 EXIT;
2318 END IF;
2319 END LOOP;
2320 END IF;
2321
2322 IF (NOT match_found)
2323 THEN
2324 v_insertstring := v_insertstring || col_list(j) || ',';
2325 END IF;
2326 END LOOP;
2327 END IF;
2328
2329 v_insertstring := RTRIM(v_insertstring, ',');
2330 v_insertstring :=
2331 v_insertstring || ' FROM ' || table_name || ' WHERE ' || table_name || '.' || primary_key || ' = ' || plsql_table_name || '(m) ';
2332 v_insertstring := v_insertstring || ' AND deleted_flag = ''0'' ';
2333 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; ';
2334 v_insertstring :=
2335 v_insertstring
2336 || ' EXCEPTION WHEN OTHERS THEN '
2337 || ' '
2338 || 'cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT(''CZ_PB_INSERTION_ERR'', ''TABLENAME'', cz_pb_mgr.v_insert_table_name,''SQLERRM'',SQLERRM);'
2339 || ' '
2340 || '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'');'
2341 || ' '
2342 || 'COMMIT; cz_pb_mgr.v_status_code := ''ERR''; RAISE; END; ';
2343
2344 EXECUTE IMMEDIATE v_insertstring;
2345 COMMIT;
2346 EXCEPTION
2347 WHEN OTHERS
2348 THEN
2349 ROLLBACK;
2350 RAISE;
2351 END;
2352 END IF;
2353 COMMIT;
2354 END;
2355
2356 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2357 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2361 -- conversion) does not copy any template
2358 -----procedure that insert intl texts into cz_localized_texts
2359 -- set persistent_intl_text_id with new intl_text_id if texts are from templates
2360 -- and if the session is model migration. Note local model migration (via model
2362 PROCEDURE insert_intl_texts(p_intl_text_id_ref IN cz_pb_mgr.t_ref, p_intl_text IN VARCHAR2,
2363 p_from_template IN BOOLEAN DEFAULT FALSE)
2364 IS
2365 plsql_table_list cz_pb_mgr.col_plsql_table_list;
2366 v_cz_intl_text_new_tbl cz_pb_mgr.t_ref;
2367 v_cz_intl_text_old_tbl cz_pb_mgr.t_ref;
2368 l_ui_def_id_tbl cz_pb_mgr.t_ref;
2369 l_model_id_tbl cz_pb_mgr.t_ref;
2370 rec_count PLS_INTEGER := 0;
2371 BEGIN
2372 IF (p_intl_text_id_ref.COUNT > 0)
2373 THEN
2374 cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
2375 cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
2376 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
2377 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
2378
2379 FOR c IN p_intl_text_id_ref.FIRST .. p_intl_text_id_ref.LAST
2380 LOOP
2381 IF (p_intl_text_id_ref(c) IS NOT NULL)
2382 THEN
2383 v_cz_intl_text_new_tbl.DELETE;
2384 v_cz_intl_text_old_tbl.DELETE;
2385 l_ui_def_id_tbl.DELETE;
2386 l_model_id_tbl.DELETE;
2387
2388 BEGIN
2389 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
2390 , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
2391 ,cz_pb_mgr.v_oraclesequenceincr
2392 )
2393 ,intl_text_id, DECODE(ui_def_id, -1, NULL, ui_def_id), NVL(model_id, -1)
2394 BULK COLLECT INTO v_cz_intl_text_new_tbl
2395 ,v_cz_intl_text_old_tbl, l_ui_def_id_tbl, l_model_id_tbl
2396 FROM cz_intl_texts
2397 WHERE intl_text_id = p_intl_text_id_ref(c) AND deleted_flag = '0' AND NVL(seeded_flag, '0') = '0';
2398 EXCEPTION
2399 WHEN NO_DATA_FOUND
2400 THEN
2401 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
2402 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2403 WHEN OTHERS
2404 THEN
2405 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_intl_texts', 'SQLERRM', SQLERRM);
2406 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLBULK', SQLCODE);
2407 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2408 END;
2409
2410 rec_count := cz_pb_mgr.v_cz_intl_text_new_ref.COUNT;
2411
2412 IF (v_cz_intl_text_new_tbl.COUNT > 0)
2413 THEN
2414 FOR k IN v_cz_intl_text_new_tbl.FIRST .. v_cz_intl_text_new_tbl.LAST
2415 LOOP
2416
2417 --Bug #5441580. This is the case of translatable properties, the original values will
2418 --have model_id = 0, we need to redefine them to the target model's model_id.
2419
2420 IF(p_intl_text = 'prop num value of cz prop vals')THEN
2421
2422 l_model_id_tbl(k) := cz_pb_mgr.h_devl_prj_by_intl_text(v_cz_intl_text_old_tbl(k));
2423 END IF;
2424
2425 IF (v_cz_intl_text_old_tbl(k) IS NOT NULL)
2426 THEN
2427 rec_count := rec_count + 1;
2428 cz_pb_mgr.v_cz_intl_text_new_ref(rec_count) := v_cz_intl_text_new_tbl(k);
2429 cz_pb_mgr.v_cz_intl_text_old_ref(rec_count) := v_cz_intl_text_old_tbl(k);
2430 cz_pb_mgr.v_intl_text_model_tbl(rec_count) := l_model_id_tbl(k);
2431 cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_ui_def_id_tbl(k);
2432 cz_pb_mgr.v_cz_intl_text_idx_ref(v_cz_intl_text_old_tbl(k)):=v_cz_intl_text_new_tbl(k);
2433 END IF;
2434 END LOOP;
2435 END IF;
2436 END IF;
2437 END LOOP;
2438
2439 IF p_intl_text <> 'prop num value of cz prop vals' THEN
2440 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');
2441 END IF;
2442 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');
2443
2444 IF (cz_pb_mgr.v_cz_intl_text_new_ref.COUNT > 0)
2445 THEN
2446 --------populate plsql_table_list for intl texts
2447 plsql_table_list.DELETE;
2448 rec_count := 1;
2449 plsql_table_list(rec_count).col_name := 'intl_text_id';
2450 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_intl_text_new_ref';
2451 rec_count := rec_count + 1;
2452
2453 IF (p_from_template AND CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
2454 plsql_table_list(rec_count).col_name := 'persistent_intl_text_id';
2455 plsql_table_list(rec_count).table_name := 'CZ_PB_MGR.v_cz_intl_text_new_ref';
2456 rec_count := rec_count + 1;
2457 END IF;
2458
2459 plsql_table_list(rec_count).col_name := 'model_id';
2460 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_model_tbl';
2464 -----------insert into cz_localized_texts
2461 rec_count := rec_count + 1;
2462 plsql_table_list(rec_count).col_name := 'ui_def_id';
2463 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_intl_text_ui_tbl';
2465 insert_into_table('cz_localized_texts'
2466 ,'intl_text_id'
2467 ,cz_pb_mgr.v_db_link
2468 ,plsql_table_list
2469 ,'cz_pb_mgr.v_cz_intl_text_old_ref'
2470 ,cz_pb_mgr.v_cz_intl_text_old_ref
2471 );
2472 update_localized_texts;
2473 cz_pb_mgr.v_cz_intl_text_new_ref.DELETE;
2474 cz_pb_mgr.v_cz_intl_text_old_ref.DELETE;
2475 v_cz_intl_text_new_tbl.DELETE;
2476 v_cz_intl_text_old_tbl.DELETE;
2477 END IF;
2478 END IF;
2479 EXCEPTION
2480 WHEN OTHERS
2481 THEN
2482 cz_pb_mgr.v_err_message := 'Insert into intl texts for: ' || p_intl_text || ' : ' || SQLERRM;
2483 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTLTEXTS', SQLCODE);
2484 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
2485 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
2486 RAISE;
2487 END insert_intl_texts;
2488
2489 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2490 PROCEDURE refresh_ui_actions(p_global_tmpl_tbl cz_pb_mgr.t_ref)
2491 IS
2492 l_update_str VARCHAR2(2000);
2493 BEGIN
2494 IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref.COUNT > 0)
2495 THEN
2496 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
2497 LOOP
2498 IF (cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(i) = 0)
2499 THEN
2500 l_update_str :=
2501 'UPDATE cz_ui_actions'
2502 || cz_pb_mgr.v_db_link
2503 || ' t'
2504 || ' '
2505 || 'SET (CONTEXT_COMPONENT_ID,RENDER_CONDITION_ID,UI_ACTION_TYPE,'
2506 || ' '
2507 || 'TARGET_UI_DEF_ID,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
2508 || ' '
2509 || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,TARGET_EXPL_NODE_ID,'
2510 || ' '
2511 || 'URL_PROPERTY_ID,TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
2512 || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
2513 || 'PROCESSING_PAGE_TEMPL_ID,PROC_PAGE_TEMPL_UI_DEF_ID,'
2514 || 'PROCESSING_CAPTION_TEXT_ID,PAGE_TITLE_TEXT_ID,MAIN_MESSAGE_TEXT_ID) '
2515 || '='
2516 || ' '
2517 || '( SELECT :1,:2,UI_ACTION_TYPE,:3,CX_COMMAND_NAME,WINDOW_PARAMETERS,'
2518 || ' '
2519 || 'TARGET_WINDOW_TYPE,TARGET_WINDOW_NAME,:4,URL_PROPERTY_ID,'
2520 || 'TARGET_PERSISTENT_NODE_ID,TARGET_NODE_PATH,TARGET_PAGE_SET_ID,'
2521 || 'TARGET_PAGE_ID,TARGET_URL,FRAME_NAME,TARGET_ANCHOR,'
2522 || ':5,:6,:7,:8,:9 '
2523 || 'FROM cz_ui_actions WHERE ui_def_id = 0'
2524 || ' '
2525 || 'AND ui_action_id = :10 )'
2526 || ' '
2527 || 'WHERE t.ui_def_id = 1'
2528 || ' '
2529 || 'AND t.ui_action_id = :11';
2530
2531 EXECUTE IMMEDIATE l_update_str
2532 USING cz_pb_mgr.g_ui_actns_ctx_comp_tbl(i)
2533 ,cz_pb_mgr.g_ui_actns_ren_cond_tbl(i)
2534 ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref(i)
2535 ,cz_pb_mgr.g_ui_actns_tgtexpl_ref(i)
2536 ,cz_pb_mgr.g_uiact_prcpg_templ_tbl(i)
2537 ,cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(i)
2538 ,cz_pb_mgr.g_uiact_prc_caption_tbl(i)
2539 ,cz_pb_mgr.g_uiact_pg_title_tbl(i)
2540 ,cz_pb_mgr.g_uiact_main_msg_tbl(i)
2541 ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(i)
2542 ,cz_pb_mgr.g_ui_actns_ui_act_id_ref(i);
2543 END IF;
2544 END LOOP;
2545 END IF;
2546
2547 COMMIT;
2548 EXCEPTION
2549 WHEN OTHERS
2550 THEN
2551 RAISE;
2552 END refresh_ui_actions;
2553
2554 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2555 PROCEDURE refresh_global_templates(p_global_tmpl_tbl cz_pb_mgr.t_ref)
2556 IS
2557 l_update_str VARCHAR2(2000);
2558 BEGIN
2559 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
2560 THEN
2561 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
2562 LOOP
2563 IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
2564 THEN
2565 l_update_str :=
2566 'UPDATE cz_ui_templates'
2567 || cz_pb_mgr.v_db_link
2568 || ' t'
2569 || ' '
2570 || 'SET (TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,BUTTON_BAR_TEMPLATE_ID'
2571 || ' '
2572 || ',MESSAGE_TYPE,MAIN_MESSAGE_ID,TITLE_ID,LAYOUT_UI_STYLE,ROOT_REGION_TYPE'
2573 || ' '
2574 || ',BUTTON_BAR_TEMPL_UIDEF_ID,ROOT_ELEMENT_SIGNATURE_ID,TEMPLATE_USAGE'
2578 || '( SELECT TEMPLATE_NAME,TEMPLATE_TYPE,PARENT_CONTAINER_TYPE,:1,MESSAGE_TYPE,'
2575 || ' '
2576 || ') ='
2577 || ' '
2579 || ' '
2580 || ':2,:3,LAYOUT_UI_STYLE,ROOT_REGION_TYPE,:4,ROOT_ELEMENT_SIGNATURE_ID,'
2581 || ' '
2582 || 'TEMPLATE_USAGE FROM cz_ui_templates WHERE ui_def_id = 0'
2583 || ' '
2584 || 'AND template_id = :5 )'
2585 || ' '
2586 || 'WHERE t.ui_def_id = 1'
2587 || ' '
2588 || 'AND t.template_id = :6';
2589
2590 EXECUTE IMMEDIATE l_update_str
2591 USING cz_pb_mgr.g_ui_templates_button_tbl(i)
2592 ,cz_pb_mgr.g_ui_templates_msg_id_ref(i)
2593 ,cz_pb_mgr.g_ui_templates_title_ref(i)
2594 ,cz_pb_mgr.g_ui_templates_but_uidef_id(i)
2595 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
2596 ,cz_pb_mgr.g_ui_templates_new_temp_id_ref(i);
2597 END IF;
2598 END LOOP;
2599 END IF;
2600
2601 COMMIT;
2602 EXCEPTION
2603 WHEN OTHERS
2604 THEN
2605 RAISE;
2606 END refresh_global_templates;
2607
2608 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
2609 ----collect all os style UI(s)
2610 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)
2611 AS
2612 v_ui_def_count NUMBER := 0;
2613 rec_count NUMBER := 0;
2614 v_src_uis_tbl cz_pb_mgr.t_ref;
2615 l_export_model_id cz_devl_projects.devl_project_id%TYPE;
2616 l_menu_caption_rule_tbl cz_pb_mgr.t_ref;
2617 l_page_caption_rule_tbl cz_pb_mgr.t_ref;
2618 l_from_mt_id_tbl cz_pb_mgr.t_ref;
2619 BEGIN
2620 IF (p_src_models.COUNT > 0)
2621 THEN
2622 x_oa_ui_def_tbl.DELETE;
2623 l_menu_caption_rule_tbl.DELETE;
2624 l_page_caption_rule_tbl.DELETE;
2625
2626 FOR i IN p_src_models.FIRST .. p_src_models.LAST
2627 LOOP
2628 l_export_model_id := p_src_models(i);
2629 v_src_uis_tbl.DELETE;
2630
2631 BEGIN
2632 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
2633 BULK COLLECT INTO v_src_uis_tbl, l_menu_caption_rule_tbl, l_page_caption_rule_tbl, l_from_mt_id_tbl
2634 FROM cz_ui_defs
2635 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';
2636 EXCEPTION
2637 WHEN NO_DATA_FOUND
2638 THEN
2639 -----if there are no UI do not care
2640 NULL;
2641 WHEN OTHERS
2642 THEN
2643 RAISE;
2644 END;
2645
2646 IF (v_src_uis_tbl.COUNT > 0)
2647 THEN
2648 FOR i IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
2649 LOOP
2650 v_ui_def_count := x_oa_ui_def_ref.COUNT + 1;
2651 rec_count := x_oa_ui_def_tbl.COUNT + 1;
2652 v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(i);
2653 x_oa_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(i);
2654 x_oa_ui_def_tbl(rec_count) := v_src_uis_tbl(i);
2655 cz_pb_mgr.v_ui_defs_mcpt_rule_ref(v_ui_def_count) := l_menu_caption_rule_tbl(i);
2656 cz_pb_mgr.v_ui_defs_pcpt_rule_ref(v_ui_def_count) := l_page_caption_rule_tbl(i);
2657 END LOOP;
2658 END IF;
2659 END LOOP; /* end loop of FOR I IN p_src_models.FIRST */
2660 END IF; /* end if of (p_src_models.COUNT > 0) */
2661 EXCEPTION
2662 WHEN OTHERS
2663 THEN
2664 RAISE;
2665 END get_oa_uis;
2666
2667 -------------------
2668 FUNCTION createelement(p_namespace IN OUT NOCOPY VARCHAR2, p_tagname IN VARCHAR2)
2669 RETURN jdr_docbuilder.ELEMENT
2670 IS
2671 l_child_element jdr_docbuilder.ELEMENT;
2672 BEGIN
2673 IF (p_namespace IS NULL)
2674 THEN
2675 p_namespace := 'jrad:';
2676 END IF;
2677
2678 l_child_element := jdr_docbuilder.createelement(p_namespace, p_tagname);
2679 RETURN l_child_element;
2680 EXCEPTION
2681 WHEN OTHERS
2682 THEN
2683 RAISE;
2684 END;
2685
2686 ----------------------------------------------
2690 l_temp_attr3_name VARCHAR2(250);
2687 PROCEDURE synch_user_attribute(attrval IN OUT NOCOPY VARCHAR2)
2688 AS
2689 l_new_persistentid NUMBER;
2691 l_attr3_name VARCHAR2(250);
2692 l_attr3_name_value_new VARCHAR2(250);
2693 l_attr3_name_value_old VARCHAR2(250);
2694 l_equal_pos NUMBER;
2695 l_pipe_pos NUMBER;
2696 l_cnt NUMBER;
2697 l_pipe VARCHAR2(1);
2698 l_old_id VARCHAR2(250);
2699 l_last_count NUMBER;
2700 BEGIN
2701 -- Check for user:attribute1 or user:attribute2 or user:attribute3
2702 --1. loop till all the name-value pairs are replaced with the new persistent ids values.
2703 --2. get the value, check if there is any entry into the global array
2704 --3. replace the value with the new one.
2705 l_temp_attr3_name := attrval;
2706 l_cnt := 0;
2707
2708 WHILE(l_temp_attr3_name IS NOT NULL)
2709 LOOP -- check if there are '|' at the begining of the string
2710 IF (LENGTH(l_temp_attr3_name) = l_last_count)
2711 THEN
2712 EXIT;
2713 ELSE
2714 l_last_count := LENGTH(l_temp_attr3_name);
2715 END IF;
2716
2717 l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
2718
2719 WHILE(l_pipe = '|')
2720 LOOP
2721 l_pipe := SUBSTR(l_temp_attr3_name, 0, 1);
2722 --if ( l_pipe = '|' ) then
2723 -- trim to remove '|' from the start till no '|' are found
2724 l_temp_attr3_name := SUBSTR(l_temp_attr3_name, 2, LENGTH(l_temp_attr3_name));
2725 --continue;
2726 END LOOP;
2727
2728 l_equal_pos := INSTR(l_temp_attr3_name, '=');
2729 l_attr3_name := SUBSTR(l_temp_attr3_name, l_cnt, l_equal_pos - 1);
2730 l_pipe_pos := INSTR(l_temp_attr3_name, '|');
2731
2732 IF (l_pipe_pos = 0)
2733 THEN
2734 l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1);
2735 ELSE
2736 l_old_id := SUBSTR(l_temp_attr3_name, l_equal_pos + 1,(l_pipe_pos - l_equal_pos) - 1);
2737 l_attr3_name_value_old := SUBSTR(l_temp_attr3_name, 0, l_pipe_pos - 1);
2738 END IF;
2739
2740 BEGIN
2741 IF (l_attr3_name = 'actionId')
2742 THEN
2743 IF (cz_pb_mgr.g_ui_actions_id_idx_ref.EXISTS(l_old_id))
2744 THEN
2745 l_new_persistentid := cz_pb_mgr.g_ui_actions_id_idx_ref(l_old_id);
2746 END IF;
2747 ELSIF(l_attr3_name IN
2748 ('displayCondnId'
2749 ,'enabledCondnId'
2750 ,'captionRuleId'
2751 ,'colDisplayCondnId'
2752 ,'liDisplayCondnId'
2753 ,'rowDisplayCondnId'
2754 ,'rowEnabledCondnId'
2755 ,'rolloverRuleId'
2756 ,'tableSummaryRuleId'
2757 ,'switcherCondnId'
2758 )
2759 )
2760 THEN
2761 IF (cz_pb_mgr.v_cz_rules_rule_id_idx_ref.EXISTS(l_old_id))
2762 THEN
2763 l_new_persistentid := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_id);
2764 END IF;
2765 ELSIF(l_attr3_name IN
2766 ('urlIntlTextId', 'captionIntlTextId', 'rolloverIntlTextId', 'tableSummaryIntlTextId', 'cellIntlTextId', 'imageSourceIntlTextId')
2767 )
2768 THEN
2769 IF (cz_pb_mgr.v_cz_intl_text_idx_ref.EXISTS(l_old_id))
2770 THEN
2771 l_new_persistentid := cz_pb_mgr.v_cz_intl_text_idx_ref(l_old_id);
2772 END IF;
2773 END IF;
2774
2775 IF (l_new_persistentid IS NOT NULL)
2776 THEN
2780 END IF;
2777 l_attr3_name_value_new := REPLACE(l_attr3_name_value_old, l_old_id, l_new_persistentid);
2778 attrval := REPLACE(attrval, l_attr3_name_value_old, l_attr3_name_value_new);
2779 l_new_persistentid := NULL;
2781 EXCEPTION
2782 WHEN NO_DATA_FOUND
2783 THEN
2784 -- do nothing
2785 -- since , all the ref tables will hold only non-seeded ids,
2786 -- the only time we will fall in this exception is when we try to look up seeded ids
2787 l_new_persistentid := NULL;
2788 WHEN OTHERS
2789 THEN
2790 RAISE;
2791 END;
2792
2793 IF (l_pipe_pos = 0)
2794 THEN
2795 l_temp_attr3_name := NULL;
2796 ELSE
2797 l_temp_attr3_name := SUBSTR(l_temp_attr3_name, l_pipe_pos + 1, LENGTH(l_temp_attr3_name));
2798 END IF;
2799 END LOOP;
2800 END;
2801
2802 -----------------------------------------------------
2803 PROCEDURE exploretree(
2804 p_jrad_parent_element IN jdr_docbuilder.ELEMENT
2805 ,p_dom_parent_element IN xmldom.domnode
2806 ,p_grouping_tag IN VARCHAR2
2807 ,p_link_name IN VARCHAR2
2808 )
2809 IS
2810 l_child_nodes xmldom.domnodelist;
2811 l_child_node xmldom.domnode;
2812 l_parent_xml_node xmldom.domnode;
2813 l_child_count NUMBER := 0;
2814 l_namespace VARCHAR2(255);
2815 l_tagname VARCHAR2(255);
2816 l_tag_name VARCHAR2(255);
2817 l_attributes xmldom.domnamednodemap;
2818 l_attrib_node xmldom.domnode;
2819 l_attrib_count NUMBER := 0;
2820 attrname VARCHAR2(255);
2821 attrval VARCHAR2(4000);
2822 l_groupingns VARCHAR2(255);
2823 l_groupingtagname VARCHAR2(255);
2824 l_grouping_tag VARCHAR2(255);
2825 l_parent_element jdr_docbuilder.ELEMENT;
2826 l_child_element jdr_docbuilder.ELEMENT;
2827 l_ampers VARCHAR2(1) := fnd_global.local_chr(38);
2828 l_parent_tag_name VARCHAR2(255);
2829 BEGIN
2830 l_child_nodes := xmldom.getchildnodes(p_dom_parent_element);
2831 l_child_count := xmldom.getlength(l_child_nodes);
2832 l_parent_element := p_jrad_parent_element;
2833
2834 IF (l_child_count > 0)
2835 THEN
2836 FOR childcount IN 0 .. l_child_count - 1
2837 LOOP
2838 l_child_node := xmldom.item(l_child_nodes, childcount);
2839 l_grouping_tag := '';
2840 l_attributes := xmldom.getattributes(l_child_node);
2841 l_attrib_count := xmldom.getlength(l_attributes);
2842 l_tag_name := xmldom.getnodename(l_child_node);
2843 l_parent_xml_node := xmldom.getparentnode(l_child_node);
2844
2845 IF NOT(xmldom.isnull(l_parent_xml_node))
2846 THEN
2847 l_parent_tag_name := xmldom.getnodename(l_parent_xml_node);
2848 END IF;
2849
2850 IF ((l_attrib_count = 0) AND(l_tag_name NOT IN('ui:firePartialAction')))
2851 THEN
2852 l_grouping_tag := l_tag_name;
2853 END IF;
2854
2855 IF (p_grouping_tag IS NOT NULL)
2856 THEN
2857 l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
2858 l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
2859 l_child_element := createelement(l_namespace, l_tagname);
2860 l_attributes := xmldom.getattributes(l_child_node);
2861
2862 IF (l_attrib_count > 0)
2863 THEN
2864 FOR attrcount IN 0 .. l_attrib_count - 1
2865 LOOP
2866 l_attrib_node := xmldom.item(l_attributes, attrcount);
2867 attrname := xmldom.getnodename(l_attrib_node);
2868 attrval := xmldom.getnodevalue(l_attrib_node);
2869 attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
2873 attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
2870 attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
2871 attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
2872 attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
2874 jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
2875 END LOOP;
2876 END IF;
2877
2878 l_groupingns := SUBSTR(p_grouping_tag, 1, INSTR(p_grouping_tag, ':'));
2879 l_groupingtagname := SUBSTR(p_grouping_tag, INSTR(p_grouping_tag, ':') + 1);
2880
2881 IF (l_groupingns IS NULL)
2882 THEN
2883 l_groupingns := 'jrad:';
2884 END IF;
2885
2886 jdr_docbuilder.addchild(p_jrad_parent_element, l_groupingns, l_groupingtagname, l_child_element);
2887 exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
2888 ELSE
2889 l_namespace := SUBSTR(xmldom.getnodename(l_child_node), 1, INSTR(xmldom.getnodename(l_child_node), ':'));
2890 l_tagname := SUBSTR(xmldom.getnodename(l_child_node), INSTR(xmldom.getnodename(l_child_node), ':') + 1);
2891 l_child_element := createelement(l_namespace, l_tagname);
2892
2893 IF (l_attrib_count > 0)
2894 THEN
2895 FOR attrcount IN 0 .. l_attrib_count - 1
2896 LOOP
2897 l_attrib_node := xmldom.item(l_attributes, attrcount);
2898 attrname := xmldom.getnodename(l_attrib_node);
2899 attrval := xmldom.getnodevalue(l_attrib_node);
2900 attrval := REPLACE(attrval, l_ampers, l_ampers || 'amp;');
2901 attrval := REPLACE(attrval, '>', l_ampers || 'gt;');
2902 attrval := REPLACE(attrval, '<', l_ampers || 'lt;');
2903 attrval := REPLACE(attrval, '"', l_ampers || 'quot;');
2904 attrval := REPLACE(attrval, '''', l_ampers || 'apos;');
2905 jdr_docbuilder.setattribute(l_child_element, attrname, attrval);
2906 END LOOP;
2907 END IF;
2908
2909 IF (l_grouping_tag IS NULL)
2910 THEN
2911 jdr_docbuilder.addchild(p_jrad_parent_element, l_child_element);
2912 exploretree(l_child_element, l_child_node, l_grouping_tag, p_link_name);
2913 ELSE
2914 exploretree(p_jrad_parent_element, l_child_node, l_grouping_tag, p_link_name);
2915 END IF;
2916 END IF;
2917 END LOOP;
2918 END IF;
2919 EXCEPTION
2920 WHEN OTHERS
2921 THEN
2922 RAISE;
2923 END exploretree;
2924
2925 ----------------------------------------------------
2926 -- ancestorNode="docname.ancestorid", where docname normally pointing to itself,
2927 -- ancestor being immediate parent or higher level's
2928 -- e.g. /oracle/apps/cz/runtime/oa/webui/templates/summary/28501_170._czc233440-xxx
2929 -- /oracle/apps/cz/runtime/oa/webui/regions/ui44563/Page_44563_1.16496045-yyy
2930 PROCEDURE handle_ancestorNode(p_old_doc_name IN VARCHAR2, p_new_doc_name IN VARCHAR2, p_chunk IN OUT NOCOPY LONG)
2931 IS
2932 BEGIN
2933 IF instr(p_chunk, 'ancestorNode="' || p_old_doc_name || '.') > 0 THEN
2934 p_chunk := replace(p_chunk, 'ancestorNode="' || p_old_doc_name || '.',
2935 'ancestorNode="' || p_new_doc_name || '.');
2936 END IF;
2937 END handle_ancestorNode;
2938
2939 ----------------------------------------------------
2940 --There are some issues with having the p_chunk
2941 --parameter on replace_extends as a CLOB. For some reason, the getLength on a CLOB for certain
2942 --JRAD documents was returning a 0, and UI copy procedure was failing.
2946 PROCEDURE replace_extends(p_chunk IN OUT NOCOPY LONG)
2943 --Retaining this parameter as LONG and changing the places where we were
2944 --calling the procedure to LONG so we be consistent everywhere
2945 --See Bug 4930937 for symptoms of the bug.
2947 IS
2948 BEGIN
2949 IF (cz_pb_mgr.g_ui_templates_jrad_old_ref.COUNT > 0) THEN
2950 FOR i IN cz_pb_mgr.g_ui_templates_jrad_old_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_old_ref.LAST
2951 LOOP
2952 IF (INSTR(p_chunk, cz_pb_mgr.g_ui_templates_jrad_old_ref(i) || '"') > 0) THEN
2953 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) || '"');
2954 END IF;
2955 END LOOP;
2956 END IF;
2957
2958 IF cz_pb_mgr.g_tmpl_jrad_old_tbl.COUNT > 0 THEN
2959 FOR i IN cz_pb_mgr.g_tmpl_jrad_old_tbl.FIRST .. cz_pb_mgr.g_tmpl_jrad_old_tbl.LAST LOOP
2960 IF INSTR(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"') > 0 THEN
2961 p_chunk := REPLACE(p_chunk, cz_pb_mgr.g_tmpl_jrad_old_tbl(i) || '"', cz_pb_mgr.g_tmpl_jrad_new_tbl(i) || '"');
2962 END IF;
2963 END LOOP;
2964 END IF;
2965 END replace_extends;
2966
2967 ----------------------------------------------------
2968 PROCEDURE collect_chunks(
2969 p_document_name IN VARCHAR2
2970 ,p_link_name IN VARCHAR2
2971 ,x_return_status OUT NOCOPY VARCHAR2
2972 ,x_msg_count OUT NOCOPY NUMBER
2973 ,x_msg_data OUT NOCOPY VARCHAR2
2974 )
2975 IS
2976 l_length BINARY_INTEGER;
2977 l_buffer VARCHAR2(32767);
2978 firstchunk VARCHAR2(32767);
2979 document_is_null EXCEPTION;
2980 l_seq_nbr NUMBER := 0;
2981
2982 TYPE chunk_record IS RECORD(
2983 jrad_doc VARCHAR2(255)
2984 ,seq_nbr NUMBER
2985 ,xml_chunk VARCHAR2(32767)
2986 );
2987
2988 TYPE chunk_record_tbl IS TABLE OF chunk_record
2989 INDEX BY BINARY_INTEGER;
2990
2991 l_chunk_tbl chunk_record_tbl;
2992 l_exportfinished BOOLEAN;
2993 BEGIN
2994 pbdebug := 22021;
2995 x_return_status := FND_API.G_RET_STS_SUCCESS;
2996 x_msg_count := 0;
2997 x_msg_data := '';
2998 jdr_docbuilder.REFRESH;
2999
3000 IF (p_document_name IS NULL) THEN
3001 RAISE document_is_null;
3002 END IF;
3003
3004 firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3005
3006 IF (firstchunk IS NULL) THEN
3007 RAISE document_is_null;
3008 END IF;
3009
3010 l_buffer := LTRIM(RTRIM(firstchunk));
3011
3012 IF (l_buffer IS NOT NULL) THEN
3013 l_seq_nbr := l_seq_nbr + 1;
3014 l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3015 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3016 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3017 END IF;
3018
3019 LOOP
3020 l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3021 l_buffer := LTRIM(RTRIM(l_buffer));
3022 EXIT WHEN l_buffer IS NULL;
3023
3024 IF (l_buffer IS NOT NULL) THEN
3025 l_seq_nbr := l_seq_nbr + 1;
3026 l_chunk_tbl(l_seq_nbr).jrad_doc := p_document_name;
3027 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3028 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3029 END IF;
3030 END LOOP;
3031
3032 IF (l_chunk_tbl.COUNT > 0) THEN
3033 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3034 LOOP
3035 EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values (:1,:2,:3)'
3036 USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3037 END LOOP;
3038 END IF;
3039
3040 COMMIT;
3041 jdr_docbuilder.REFRESH;
3042 EXCEPTION
3043 WHEN document_is_null THEN
3044 x_return_status := FND_API.G_RET_STS_ERROR;
3045 x_msg_count := 1;
3046 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3047 RAISE;
3048 WHEN OTHERS THEN
3049 x_return_status := FND_API.G_RET_STS_ERROR;
3050 x_msg_count := 1;
3051 x_msg_data := SQLERRM;
3052 RAISE;
3053 END collect_chunks;
3054
3055 ----------------------------------------------------
3056 -- NOTE: p_document_type of NULL (default) represents a UI content template document.
3057 -- To collect JRAD chunks for UI pages, UI_PAGE should be passed as input value.
3058 PROCEDURE collect_chunks(
3059 p_document_name IN VARCHAR2
3060 ,p_new_document_name IN VARCHAR2
3061 ,p_link_name IN VARCHAR2
3062 ,x_return_status OUT NOCOPY VARCHAR2
3063 ,x_msg_count OUT NOCOPY NUMBER
3064 ,x_msg_data OUT NOCOPY VARCHAR2
3065 ,p_document_type IN VARCHAR2 DEFAULT NULL
3066 )
3067 IS
3068 amt BINARY_INTEGER := 32767;
3069 l_length BINARY_INTEGER;
3070 l_offset BINARY_INTEGER := 1;
3071 l_buffer VARCHAR2(32767);
3072 firstchunk VARCHAR2(32767);
3073 document_is_null EXCEPTION;
3074 l_seq_nbr NUMBER := 0;
3075 l_old_ui_def VARCHAR2(200);
3076 l_new_ui_def VARCHAR2(300);
3077 l_lob CLOB;
3078 l_lob_temp CLOB;
3079 p xmlparser.parser;
3080 doc xmldom.domdocument;
3081 nl xmldom.domnodelist;
3082 one_node xmldom.domnode;
3086 n xmldom.DOMNode;
3083 one_element xmldom.domelement;
3084 l_value VARCHAR2(32767);
3085 nodeMap xmldom.DOMNamedNodeMap;
3087 attrname varchar2(100);
3088 len2 NUMBER;
3089
3090 TYPE chunk_record IS RECORD(
3091 jrad_doc VARCHAR2(255)
3092 ,seq_nbr NUMBER
3093 ,xml_chunk VARCHAR2(32767)
3094 );
3095
3096 TYPE chunk_record_tbl IS TABLE OF chunk_record
3097 INDEX BY BINARY_INTEGER;
3098
3099 l_chunk_tbl chunk_record_tbl;
3100 l_exportfinished BOOLEAN;
3101 BEGIN
3102 pbdebug := 22022;
3103 x_return_status := FND_API.G_RET_STS_SUCCESS;
3104 x_msg_count := 0;
3105 x_msg_data := '';
3106 jdr_docbuilder.REFRESH;
3107
3108 IF (p_document_name IS NULL) THEN
3109 RAISE document_is_null;
3110 END IF;
3111
3112 firstchunk := jdr_utils.exportdocument(p_document_name, l_exportfinished);
3113
3114 IF (firstchunk IS NULL) THEN
3115 RAISE document_is_null;
3116 END IF;
3117
3118 l_buffer := LTRIM(RTRIM(firstchunk));
3119
3120 IF (l_buffer IS NOT NULL) THEN
3121 l_seq_nbr := l_seq_nbr + 1;
3122 l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3123 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3124 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3125 END IF;
3126
3127 LOOP
3128 l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3129 l_buffer := LTRIM(RTRIM(l_buffer));
3130 EXIT WHEN l_buffer IS NULL;
3131
3132 IF (l_buffer IS NOT NULL) THEN
3133 l_seq_nbr := l_seq_nbr + 1;
3134 l_chunk_tbl(l_seq_nbr).jrad_doc := p_new_document_name;
3135 l_chunk_tbl(l_seq_nbr).seq_nbr := l_seq_nbr;
3136 l_chunk_tbl(l_seq_nbr).xml_chunk := l_buffer;
3137 END IF;
3138 END LOOP;
3139
3140 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
3141 IF (l_chunk_tbl.COUNT > 0) THEN
3142 SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3143 SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3144
3145 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3146 LOOP
3147 -- collect the entire document in the CLOB
3148 l_length := LENGTH(l_chunk_tbl(i).xml_chunk);
3149 SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk_tbl(i).xml_chunk);
3150 END LOOP;
3151
3152 -- parse the document for user:attribute3
3153 -- call synch_user_attribute
3154 l_length := SYS.DBMS_LOB.getlength(l_lob);
3155 p := xmlparser.newparser;
3156 xmlparser.parseclob(p, l_lob);
3157 SYS.DBMS_LOB.CLOSE(l_lob);
3158 SYS.DBMS_LOB.freetemporary(l_lob);
3159 doc := xmlparser.getdocument(p);
3160 nl := xmldom.getelementsbytagname(doc, '*');
3161
3162 IF (p_document_type IS NULL )THEN
3163 FOR node_index IN 0 .. xmldom.getlength(nl) - 1
3164 LOOP
3165 one_node := xmldom.item(nl, node_index);
3166 one_element := xmldom.makeelement(one_node);
3167 --node_attr := xmldom.getattributenode(one_element, 'user:attribute3');
3168 -- This is a workaround for bug 5211850 till the API xmldom.getattributenode is fixed
3169 -- get all attributes of element
3170 nodeMap := xmldom.getAttributes(one_node);
3171
3172 IF (xmldom.isNull(nodeMap) = FALSE) THEN
3173 len2 := xmldom.getLength(nodeMap);
3174 -- loop through attributes
3175 FOR i IN 0..len2-1 LOOP
3176 n := xmldom.item(nodeMap, i);
3177 attrname := xmldom.getNodeName(n);
3178 IF(attrname='user:attribute3' ) THEN
3179 l_value := xmldom.getNodeValue(n);
3180 EXIT;
3181 END IF;
3182 END LOOP;
3183 END IF;
3184
3185 IF (l_value IS NOT NULL) THEN
3186 synch_user_attribute(l_value);
3187 xmldom.setattribute(one_element, 'user:attribute3', l_value);
3188 l_value:=NULL;
3189 END IF;
3190 END LOOP;
3191 END IF;
3192 -- Break the document to insert into the cz_jrad_chunks
3193 SYS.DBMS_LOB.createtemporary(l_lob_temp, TRUE, DBMS_LOB.SESSION);
3194 SYS.DBMS_LOB.OPEN(l_lob_temp, DBMS_LOB.lob_readwrite);
3195 xmldom.writetoclob(doc, l_lob_temp);
3196
3197 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3198 LOOP
3199 SYS.DBMS_LOB.READ(l_lob_temp, amt, l_offset, l_buffer);
3200 l_chunk_tbl(i).xml_chunk := l_buffer;
3201 l_offset := l_offset + amt;
3202 l_buffer := NULL;
3203 END LOOP;
3204
3205 SYS.DBMS_LOB.CLOSE(l_lob_temp);
3206 SYS.DBMS_LOB.freetemporary(l_lob_temp);
3207 xmlparser.freeparser(p);
3208 xmldom.freeDocument(doc);
3209 END IF;
3210 END IF;
3211
3212 IF (l_chunk_tbl.COUNT > 0) THEN
3213 FOR i IN l_chunk_tbl.FIRST .. l_chunk_tbl.LAST
3214 LOOP
3215 replace_extends(l_chunk_tbl(i).xml_chunk);
3216 handle_ancestorNode(p_document_name, p_new_document_name, l_chunk_tbl(i).xml_chunk);
3220 END IF;
3217 EXECUTE IMMEDIATE 'insert into cz_jrad_chunks' || p_link_name || ' (jrad_doc,seq_nbr,xml_chunk)' || ' ' || 'values (:1,:2,:3)'
3218 USING l_chunk_tbl(i).jrad_doc, l_chunk_tbl(i).seq_nbr, l_chunk_tbl(i).xml_chunk;
3219 END LOOP;
3221
3222 COMMIT;
3223 jdr_docbuilder.REFRESH;
3224 EXCEPTION
3225 WHEN document_is_null THEN
3226 x_return_status := FND_API.G_RET_STS_ERROR;
3227 x_msg_count := 1;
3228 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3229 RAISE;
3230 WHEN OTHERS THEN
3231 x_return_status := FND_API.G_RET_STS_ERROR;
3232 x_msg_count := 1;
3233 x_msg_data := SQLERRM;
3234 RAISE;
3235 END collect_chunks;
3236
3237 ------------------------------------
3238 PROCEDURE insert_jrad_docs
3239 IS
3240 PRAGMA AUTONOMOUS_TRANSACTION;
3241
3242 CURSOR jrad_docs_cur
3243 IS
3244 SELECT DISTINCT jrad_doc
3245 FROM cz_jrad_chunks;
3246
3247 CURSOR jrad_chunks_cur(p_jrad_doc VARCHAR2)
3248 IS
3249 SELECT xml_chunk
3250 FROM cz_jrad_chunks
3251 WHERE jrad_doc = p_jrad_doc
3252 ORDER BY seq_nbr;
3253
3254 l_jrad_doc VARCHAR2(255);
3255 l_chunk VARCHAR2(32767);
3256 l_lob CLOB;
3257 l_offset PLS_INTEGER := 1;
3258 l_length BINARY_INTEGER;
3259 l_doc_id NUMBER;
3260 p xmlparser.parser;
3261 doc xmldom.domdocument;
3262 nl xmldom.domnodelist;
3263 len NUMBER;
3264 n xmldom.domnode;
3265 top_node xmldom.domnode;
3266 l_parent_node xmldom.domnode;
3267 v_ns VARCHAR2(255);
3268 v_el VARCHAR2(255);
3269 len1 NUMBER;
3270 len2 NUMBER;
3271 nnm xmldom.domnamednodemap;
3272 attrname VARCHAR2(255);
3273 attrval VARCHAR2(255);
3274 newattrname VARCHAR2(255);
3275 name_space VARCHAR2(255);
3276 tag_name VARCHAR2(255);
3277 l_doc jdr_docbuilder.document;
3278 top_element jdr_docbuilder.ELEMENT;
3279 g_document jdr_docbuilder.document;
3280 l_new_document jdr_docbuilder.document;
3281 jrad_save_status PLS_INTEGER;
3282 document_is_null EXCEPTION;
3283 l_msg VARCHAR2(2000);
3284
3285 TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
3286
3287 g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
3288 BEGIN
3289 pbdebug := 22024;
3290
3291 OPEN jrad_docs_cur;
3292
3293 LOOP
3294 jdr_docbuilder.REFRESH;
3295
3296 FETCH jrad_docs_cur
3297 INTO l_jrad_doc;
3298
3299 EXIT WHEN jrad_docs_cur%NOTFOUND;
3300 SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3301 SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3302
3303 OPEN jrad_chunks_cur(l_jrad_doc);
3304
3305 LOOP
3306 FETCH jrad_chunks_cur
3307 INTO l_chunk;
3308
3309 EXIT WHEN jrad_chunks_cur%NOTFOUND;
3310
3311 --There are some issues with having the p_chunk
3312 --parameter on replace extends as a CLOB. For some reason, the getLength on a CLOB for certain
3313 --JRAD documents was returning a 0, and UI copy procedure was failing.
3314 --Retaining this parameter as LONG and changing the places where we were
3315 --calling the procedure to LONG so we be consistent everywhere
3316 --See Bug 4930937 for symptoms of the bug.
3317 IF (l_chunk IS NOT NULL)
3318 THEN
3319 -- for schema migration, no need to do any replacement; for remote publishing (or migration),
3320 -- the replacement is done before this gets called (e.g., when collect_chunks)
3321 -- and the two templ arrays are empty anyway
3322 -- replace_extends(l_chunk);
3323 l_length := LENGTH(l_chunk);
3324 SYS.DBMS_LOB.writeappend(l_lob, l_length, l_chunk);
3325 END IF;
3326 END LOOP;
3327
3328 CLOSE jrad_chunks_cur;
3329
3330 l_length := SYS.DBMS_LOB.getlength(l_lob);
3331 p := xmlparser.newparser;
3332 xmlparser.parseclob(p, l_lob);
3333 doc := xmlparser.getdocument(p);
3334 SYS.DBMS_LOB.CLOSE(l_lob);
3335 SYS.DBMS_LOB.freetemporary(l_lob);
3336 l_doc := jdr_docbuilder.createdocument(l_jrad_doc);
3337 top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
3338
3339 IF (g_toplevel_attr_tbl.COUNT > 0)
3340 THEN
3341 FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
3342 LOOP
3343 BEGIN
3344 xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
3345 EXCEPTION
3346 WHEN OTHERS
3347 THEN
3348 NULL;
3349 END;
3350 END LOOP;
3351 END IF;
3352
3353 name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
3354 tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
3358 IF (xmldom.isnull(nnm) = FALSE)
3355 top_element := createelement(name_space, tag_name);
3356 nnm := xmldom.getattributes(top_node);
3357
3359 THEN
3360 len2 := xmldom.getlength(nnm);
3361
3362 FOR i IN 0 .. len2 - 1
3363 LOOP
3364 n := xmldom.item(nnm, i);
3365 attrname := xmldom.getnodename(n);
3366 attrval := xmldom.getnodevalue(n);
3367 jdr_docbuilder.setattribute(top_element, attrname, attrval);
3368 END LOOP;
3369 END IF;
3370
3371 jdr_docbuilder.settoplevelelement(l_doc, top_element);
3372
3373 BEGIN
3374 exploretree(top_element, top_node, '', ' ');
3375 EXCEPTION
3376 WHEN OTHERS
3377 THEN
3378 RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
3379 END;
3380
3381 jrad_save_status := jdr_docbuilder.SAVE;
3382 xmlparser.freeparser(p);
3383 xmldom.freeDocument(doc);
3384 COMMIT;
3385 jdr_docbuilder.REFRESH;
3386 END LOOP;
3387
3388 CLOSE jrad_docs_cur;
3389
3390 COMMIT;
3391 EXCEPTION
3392 WHEN OTHERS
3393 THEN
3394 ROLLBACK;
3395 jdr_docbuilder.REFRESH;
3396 IF l_jrad_doc is not null THEN
3397 l_msg := l_jrad_doc || '-' || SQLERRM;
3398 ELSE
3399 l_msg := SQLERRM;
3400 END IF;
3401
3402 INSERT INTO cz_db_logs
3403 (logtime, caller, MESSAGE
3404 )
3405 VALUES (SYSDATE, 'CZJRADLOAD', l_msg
3406 );
3407
3408 COMMIT;
3409 RAISE;
3410 END;
3411
3412 --------------------------------------------------
3413 PROCEDURE export_jrad_docs(
3414 p_document_name IN VARCHAR2
3415 ,p_link_name IN VARCHAR2
3416 ,x_return_status OUT NOCOPY VARCHAR2
3417 ,x_msg_count OUT NOCOPY NUMBER
3418 ,x_msg_data OUT NOCOPY VARCHAR2
3419 )
3420 IS
3421 BEGIN
3422 pbdebug := 22025;
3423
3424 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3425
3426 collect_chunks(p_document_name, p_link_name, x_return_status, x_msg_count, x_msg_data);
3427
3428 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '; end; ';
3429
3430 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3431 EXCEPTION
3432 WHEN NO_DATA_FOUND
3433 THEN
3434 x_return_status := FND_API.G_RET_STS_ERROR;
3435 x_msg_count := 1;
3436 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_document_name);
3437 WHEN OTHERS
3438 THEN
3439 x_return_status := fnd_api.g_ret_sts_unexp_error;
3440 x_msg_count := 1;
3441 x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
3442 END export_jrad_docs;
3443
3444 ----------------------------------------------------
3445 PROCEDURE export_jrad_docs(
3446 p_ui_def_id IN NUMBER
3447 ,p_link_name IN VARCHAR2
3448 ,x_return_status OUT NOCOPY VARCHAR2
3449 ,x_msg_count OUT NOCOPY NUMBER
3450 ,x_msg_data OUT NOCOPY VARCHAR2
3451 )
3452 IS
3453 l_jrad_doc_tbl jraddoc_type_tbl;
3454 l_link_name cz_servers.fndnam_link_name%TYPE;
3455 link_name_is_null EXCEPTION;
3456 BEGIN
3457 pbdebug := 22026;
3458
3459 IF (p_link_name IS NULL)
3460 THEN
3461 RAISE link_name_is_null;
3462 ELSE
3463 l_link_name := '@' || p_link_name;
3464 END IF;
3465
3466 SELECT jrad_doc
3467 BULK COLLECT INTO l_jrad_doc_tbl
3468 FROM cz_ui_pages
3469 WHERE cz_ui_pages.ui_def_id = p_ui_def_id AND cz_ui_pages.deleted_flag = '0';
3470
3471 IF (l_jrad_doc_tbl.COUNT > 0)
3472 THEN
3473 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || l_link_name || '; commit; end; ';
3474
3475 FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
3476 LOOP
3477 collect_chunks(l_jrad_doc_tbl(i), l_link_name, x_return_status, x_msg_count, x_msg_data);
3478 END LOOP;
3479
3480 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || l_link_name || '; end; ';
3481
3482 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || l_link_name || '; commit; end; ';
3483 END IF;
3484 EXCEPTION
3485 WHEN link_name_is_null
3486 THEN
3487 x_return_status := FND_API.G_RET_STS_ERROR;
3488 x_msg_data := 'Db Link Name is Null';
3489 log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
3490 WHEN NO_DATA_FOUND
3491 THEN
3492 x_return_status := FND_API.G_RET_STS_ERROR;
3493 x_msg_count := 1;
3494 x_msg_data := cz_utils.get_text('CZ_NO_JRADDOC_EXISTS', 'DOC', p_ui_def_id);
3495 WHEN OTHERS
3496 THEN
3497 x_return_status := fnd_api.g_ret_sts_unexp_error;
3498 x_msg_count := 1;
3499 x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
3500 END export_jrad_docs;
3501
3502 ------>>>>>>>>>>>>>>>>>>>>>>>>>>
3503 PROCEDURE export_template_jrad_docs(
3507 ,x_return_status OUT NOCOPY VARCHAR2
3504 p_ui_def_id IN NUMBER
3505 ,p_template_id IN NUMBER
3506 ,p_link_name IN VARCHAR2
3508 ,x_msg_count OUT NOCOPY NUMBER
3509 ,x_msg_data OUT NOCOPY VARCHAR2
3510 )
3511 IS
3512 l_jrad_doc_tbl jraddoc_type_tbl;
3513 BEGIN
3514 pbdebug := 22026;
3515
3516 SELECT jrad_doc
3517 BULK COLLECT INTO l_jrad_doc_tbl
3518 FROM cz_ui_templates
3519 WHERE cz_ui_templates.ui_def_id = p_ui_def_id
3520 AND cz_ui_templates.template_id = p_template_id
3521 AND cz_ui_templates.seeded_flag = '0'
3522 AND cz_ui_templates.deleted_flag = '0';
3523
3524 IF (l_jrad_doc_tbl.COUNT > 0)
3525 THEN
3526 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3527
3528 FOR i IN l_jrad_doc_tbl.FIRST .. l_jrad_doc_tbl.LAST
3529 LOOP
3530 collect_chunks(l_jrad_doc_tbl(i), p_link_name, x_return_status, x_msg_count, x_msg_data);
3531 END LOOP;
3532
3533 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '; end; ';
3534
3535 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3536 END IF;
3537 EXCEPTION
3538 WHEN OTHERS
3539 THEN
3540 x_return_status := FND_API.G_RET_STS_ERROR;
3541 x_msg_count := 1;
3542 x_msg_data := cz_utils.get_text('CZ_JRADDOC_EXPERR', 'ERR', SQLERRM);
3543 END export_template_jrad_docs;
3544
3545 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>
3546 PROCEDURE export_template_jrad_docs(
3547 p_link_name IN VARCHAR2
3548 ,x_return_status OUT NOCOPY VARCHAR2
3549 ,x_msg_count OUT NOCOPY NUMBER
3550 ,x_msg_data OUT NOCOPY VARCHAR2
3551 )
3552 IS
3553 l_ui_def_id_tbl cz_pb_mgr.t_ref;
3554 l_template_id_tbl cz_pb_mgr.t_ref;
3555 l_link_name cz_servers.fndnam_link_name%TYPE;
3556 link_name_is_null EXCEPTION;
3557 BEGIN
3558 IF (p_link_name IS NULL)
3559 THEN
3560 RAISE link_name_is_null;
3561 ELSE
3562 l_link_name := '@' || p_link_name;
3563 END IF;
3564
3565 SELECT ui_def_id, template_id
3566 BULK COLLECT INTO l_ui_def_id_tbl, l_template_id_tbl
3567 FROM cz_ui_templates
3568 WHERE cz_ui_templates.deleted_flag = '0'
3569 AND cz_ui_templates.seeded_flag = '0'
3570 AND ( cz_ui_templates.ui_def_id = 0
3571 OR cz_ui_templates.ui_def_id IN(
3572 SELECT ui_def_id
3573 FROM cz_ui_defs
3574 WHERE cz_ui_defs.deleted_flag = '0'
3575 AND cz_ui_defs.devl_project_id IN(SELECT object_id
3576 FROM cz_rp_entries
3577 WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0'))
3578 );
3579
3580 IF (l_ui_def_id_tbl.COUNT > 0)
3581 THEN
3582 FOR i IN l_ui_def_id_tbl.FIRST .. l_ui_def_id_tbl.LAST
3583 LOOP
3584 x_return_status := FND_API.G_RET_STS_SUCCESS;
3585 x_msg_data := '';
3586 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);
3587
3588 IF (x_return_status = FND_API.G_RET_STS_ERROR)
3589 THEN
3590 log_pb_errors(x_msg_data, '0', 'EXPORTJRADDOCS', SQLCODE);
3591 END IF;
3592 END LOOP;
3593 END IF;
3594 EXCEPTION
3595 WHEN link_name_is_null
3596 THEN
3597 x_return_status := FND_API.G_RET_STS_ERROR;
3598 x_msg_data := 'Db Link Name is Null';
3599 log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
3600 WHEN OTHERS
3601 THEN
3602 x_return_status := FND_API.G_RET_STS_ERROR;
3603 x_msg_data := SQLERRM;
3604 log_pb_errors(x_msg_data, '2', 'EXPORTJRADDOCS', SQLCODE);
3605 END export_template_jrad_docs;
3606
3607 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3608 PROCEDURE insert_into_repository(p_old_document_name IN VARCHAR2, p_new_document_name IN VARCHAR2)
3609 IS
3610 l_lob CLOB;
3611 l_offset PLS_INTEGER := 1;
3612 l_length BINARY_INTEGER;
3613 l_doc_id NUMBER;
3614 l_buffer LONG;
3615 firstchunk LONG;
3616 p xmlparser.parser;
3617 doc xmldom.domdocument;
3618 nl xmldom.domnodelist;
3619 len NUMBER;
3620 n xmldom.domnode;
3621 top_node xmldom.domnode;
3622 l_parent_node xmldom.domnode;
3623 v_ns VARCHAR2(255);
3624 v_el VARCHAR2(255);
3625 len1 NUMBER;
3626 len2 NUMBER;
3627 nnm xmldom.domnamednodemap;
3628 attrname VARCHAR2(255);
3629 attrval VARCHAR2(255);
3630 newattrname VARCHAR2(255);
3631 name_space VARCHAR2(255);
3632 tag_name VARCHAR2(255);
3633 l_doc jdr_docbuilder.document;
3634 top_element jdr_docbuilder.ELEMENT;
3635 g_document jdr_docbuilder.document;
3636 l_new_document jdr_docbuilder.document;
3637 jrad_save_status PLS_INTEGER;
3638 document_is_null EXCEPTION;
3639
3640 TYPE char_tbl_type IS TABLE OF VARCHAR2(255);
3641
3645 pbdebug := 22027;
3642 g_toplevel_attr_tbl char_tbl_type := char_tbl_type('version', 'xml:lang', 'xmlns:oa', 'xmlns:ui', 'xmlns:jrad', 'xmlns:user', 'xmlns');
3643 l_exportfinished BOOLEAN;
3644 BEGIN
3646 jdr_docbuilder.REFRESH;
3647
3648 IF (p_old_document_name IS NULL)
3649 THEN
3650 RAISE document_is_null;
3651 END IF;
3652
3653 --There are some issues with having the p_chunk
3654 --parameter as a CLOB. For some reason, the getLength on a CLOB for certain
3655 --JRAD documents was returning a 0, and UI copy procedure was failing.
3656 --Retaining this parameter as LONG and changing the places where we were
3657 --calling the procedure to LONG so we be consistent everywhere
3658 --See Bug 4930937 for symptoms of the bug.
3659 SYS.DBMS_LOB.createtemporary(l_lob, TRUE, DBMS_LOB.SESSION);
3660 SYS.DBMS_LOB.OPEN(l_lob, DBMS_LOB.lob_readwrite);
3661 firstchunk := jdr_utils.exportdocument(p_old_document_name, l_exportfinished);
3662 replace_extends(firstchunk);
3663 handle_ancestorNode(p_old_document_name, p_new_document_name, firstchunk);
3664
3665 IF (firstchunk IS NULL)
3666 THEN
3667 RAISE document_is_null;
3668 END IF;
3669
3670 BEGIN
3671 SYS.DBMS_LOB.writeappend(l_lob, LENGTH(firstchunk), firstchunk);
3672 EXCEPTION
3673 WHEN OTHERS
3674 THEN
3675 NULL; ---- for negative index to be ignored
3676 END;
3677
3678 --There are some issues with having the p_chunk
3679 --parameter on replace_extends as a CLOB. For some reason, the getLength on a CLOB for certain
3680 --JRAD documents was returning a 0, and UI copy procedure was failing.
3681 --Retaining this parameter as LONG and changing the places where we were
3682 --calling the procedure to LONG so we be consistent everywhere
3683 --See Bug 4930937 for symptoms of the bug.
3684 LOOP
3685 l_buffer := jdr_utils.exportdocument(NULL, l_exportfinished);
3686 EXIT WHEN l_buffer IS NULL;
3687 replace_extends(l_buffer);
3688 handle_ancestorNode(p_old_document_name, p_new_document_name, l_buffer);
3689 l_length := LENGTH(l_buffer);
3690 SYS.DBMS_LOB.writeappend(l_lob, l_length, l_buffer);
3691 END LOOP;
3692
3693 l_length := SYS.DBMS_LOB.getlength(l_lob);
3694 p := xmlparser.newparser;
3695 xmlparser.parseclob(p, l_lob);
3696 doc := xmlparser.getdocument(p);
3697 SYS.DBMS_LOB.CLOSE(l_lob);
3698 SYS.DBMS_LOB.freetemporary(l_lob);
3699 l_doc := jdr_docbuilder.createdocument(p_new_document_name);
3700 top_node := xmldom.makenode(xmldom.getdocumentelement(doc));
3701
3702 IF (g_toplevel_attr_tbl.COUNT > 0)
3703 THEN
3704 FOR i IN g_toplevel_attr_tbl.FIRST .. g_toplevel_attr_tbl.LAST
3705 LOOP
3706 BEGIN
3707 xmldom.removeattribute(xmldom.makeelement(top_node), g_toplevel_attr_tbl(i));
3708 EXCEPTION
3709 WHEN OTHERS
3710 THEN
3711 NULL;
3712 END;
3713 END LOOP;
3714 END IF;
3715
3716 name_space := SUBSTR(xmldom.getnodename(top_node), 1, INSTR(xmldom.getnodename(top_node), ':'));
3717 tag_name := SUBSTR(xmldom.getnodename(top_node), INSTR(xmldom.getnodename(top_node), ':') + 1);
3718 top_element := createelement(name_space, tag_name);
3719 nnm := xmldom.getattributes(top_node);
3720
3721 IF (xmldom.isnull(nnm) = FALSE)
3722 THEN
3723 len2 := xmldom.getlength(nnm);
3724
3725 FOR i IN 0 .. len2 - 1
3726 LOOP
3727 n := xmldom.item(nnm, i);
3728 attrname := xmldom.getnodename(n);
3729 attrval := xmldom.getnodevalue(n);
3730 jdr_docbuilder.setattribute(top_element, attrname, attrval);
3731 END LOOP;
3732 END IF;
3733
3734 jdr_docbuilder.settoplevelelement(l_doc, top_element);
3735
3736 BEGIN
3737 exploretree(top_element, top_node, '', ' ');
3738 EXCEPTION
3739 WHEN OTHERS
3740 THEN
3741 RAISE_APPLICATION_ERROR(-20001, 'EXPLORETREE_ERROR') ;
3742 END;
3743
3744 jrad_save_status := jdr_docbuilder.SAVE;
3745 xmlparser.freeparser(p);
3746 COMMIT;
3747 cz_pb_mgr.g_jrad_trans_list := jdr_utils.translationlist();
3748 cz_pb_mgr.g_jrad_trans_list := jdr_utils.gettranslations(p_old_document_name);
3749
3750 IF (cz_pb_mgr.g_jrad_trans_list IS NOT NULL)
3751 THEN
3752 jdr_utils.savetranslations(p_new_document_name, cz_pb_mgr.g_jrad_trans_list);
3753 END IF;
3754
3755 jdr_docbuilder.REFRESH;
3756 COMMIT;
3757 EXCEPTION
3758 WHEN document_is_null
3759 THEN
3760 NULL;
3761 WHEN OTHERS
3762 THEN
3763 EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
3764
3765 RAISE;
3766 END insert_into_repository;
3767
3768 -------------------------------------------------------
3769 -- p_document_type is used to decide if id replacement on xml doc is needed in a remote model migration session:
3770 -- if it is null (template jrad docs), replacement will be done via collect_chunks -> synch_user_attribute,
3771 -- otherwise (page xml docs), no replacement will be performed.
3775 l_return_status VARCHAR2(1);
3772 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)
3773 IS
3774 document_is_null EXCEPTION;
3776 l_msg_count NUMBER := 0;
3777 l_msg_data VARCHAR2(2000);
3778 BEGIN
3779 pbdebug := 22028;
3780
3781 IF (cz_pb_mgr.v_server_id <> 0)
3782 THEN
3783 jdr_docbuilder.REFRESH;
3784
3785 IF (p_old_document_name IS NULL)
3786 THEN
3787 RAISE document_is_null;
3788 END IF;
3789
3790 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || ' commit; end; ';
3791
3792 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);
3793
3794 EXECUTE IMMEDIATE ' begin cz_pb_mgr.insert_jrad_docs' || p_link_name || '; end; ';
3795
3796 EXECUTE IMMEDIATE ' begin delete from cz_jrad_chunks' || p_link_name || '; commit; end; ';
3797 ELSE
3798 insert_into_repository(p_old_document_name, p_new_document_name);
3799 END IF;
3800 EXCEPTION
3801 WHEN document_is_null
3802 THEN
3803 NULL;
3804 WHEN EXPLORETREE_ERROR THEN
3805 fnd_message.set_name('FND', 'FND_AS_UNEXPECTED_ERROR');
3806 fnd_message.set_token('ERROR_TEXT', SQLERRM);
3807 fnd_message.set_token('PKG_NAME', 'cz_pb_mgr');
3808 fnd_message.set_token('PROCEDURE_NAME', 'INSERT_JRAD_DOCS');
3809 cz_pb_mgr.v_err_message := fnd_message.get;
3810 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPLORETREE', SQLCODE);
3811 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3812
3813 RAISE;
3814 WHEN OTHERS
3815 THEN
3816 EXECUTE IMMEDIATE 'BEGIN jdr_docbuilder.refresh; END;';
3817
3818 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_JRAD_DOC_ERR', 'JRADDOC', p_old_document_name, 'SQLERRM', SQLERRM);
3819 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTINTOJRADREPOS', SQLCODE);
3820 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3821
3822 RAISE;
3823 END insert_into_repository;
3824
3825 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
3826 -----collect from cz_ui_pages
3827 PROCEDURE bulk_collect_ui_pages
3828 IS
3829 l_cz_ui_pages_ui_def_tbl cz_pb_mgr.t_ref;
3830 l_cz_ui_pages_jrad_doc_tbl varchar_tbl_type;
3831 l_cz_ui_pages_capt_id_tbl cz_pb_mgr.t_ref;
3832 l_cz_page_stat_templ_tbl cz_pb_mgr.t_ref;
3833 l_cz_page_stat_uidef_tbl cz_pb_mgr.t_ref;
3834 l_cz_ui_pages_pgtmplid_tbl cz_pb_mgr.t_ref;
3835 l_cz_ui_pages_pgtmplui_tbl cz_pb_mgr.t_ref;
3836 l_cz_ui_pages_dis_cond_tbl cz_pb_mgr.t_ref;
3837 l_cz_ui_pages_enb_cond_tbl cz_pb_mgr.t_ref;
3838 l_cz_ui_pages_expl_node_tbl cz_pb_mgr.t_ref;
3839 l_rec_count NUMBER;
3840 BEGIN
3841 pbdebug := 22029;
3842
3843 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
3844 THEN
3845 cz_pb_mgr.g_cz_ui_pages_ui_def_ref.DELETE;
3846 cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.DELETE;
3847 cz_pb_mgr.g_cz_ui_pages_capt_id_ref.DELETE;
3848 cz_pb_mgr.g_pages_ui_def_old_ref.DELETE;
3849 cz_pb_mgr.g_cz_ui_old_jrad_doc_ref.DELETE;
3850 -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
3851 -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
3852 cz_pb_mgr.g_cz_ui_pages_stat_templ.DELETE;
3853 cz_pb_mgr.g_cz_ui_pages_stat_ui.DELETE;
3854 cz_pb_mgr.g_cz_uipg_tmplid_tbl.DELETE;
3855 cz_pb_mgr.g_cz_uipg_tmplui_tbl.DELETE;
3856 cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl.DELETE;
3857 cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl.DELETE;
3858 cz_pb_mgr.g_cz_ui_pages_expl_tbl.DELETE;
3859
3860 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
3861 LOOP
3862 l_cz_ui_pages_ui_def_tbl.DELETE;
3863 l_cz_ui_pages_jrad_doc_tbl.DELETE;
3864 l_cz_ui_pages_capt_id_tbl.DELETE;
3865 l_cz_page_stat_templ_tbl.DELETE;
3866 l_cz_page_stat_uidef_tbl.DELETE;
3867 l_cz_ui_pages_pgtmplid_tbl.DELETE;
3868 l_cz_ui_pages_pgtmplui_tbl.DELETE;
3869 l_cz_ui_pages_dis_cond_tbl.DELETE;
3870 l_cz_ui_pages_enb_cond_tbl.DELETE;
3871 l_cz_ui_pages_expl_node_tbl.DELETE;
3872
3873 SELECT ui_def_id, jrad_doc, caption_text_id, page_status_template_id
3874 ,page_status_templ_uidef_id, outer_page_template_id, outer_page_templ_uidef_id, display_condition_id
3875 ,enabled_condition_id, pagebase_expl_node_id
3876 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
3877 ,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
3878 ,l_cz_ui_pages_enb_cond_tbl, l_cz_ui_pages_expl_node_tbl
3879 FROM cz_ui_pages
3880 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;
3881
3882 IF (l_cz_ui_pages_ui_def_tbl.COUNT > 0)
3883 THEN
3884 l_rec_count := cz_pb_mgr.g_pages_ui_def_old_ref.COUNT;
3885
3889 -- cz_pb_mgr.g_cz_ui_pages_ui_def_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
3886 FOR uidefref IN l_cz_ui_pages_ui_def_tbl.FIRST .. l_cz_ui_pages_ui_def_tbl.LAST
3887 LOOP
3888 l_rec_count := l_rec_count + 1;
3890 -- cz_pb_mgr.v_intl_text_ui_tbl(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
3891 cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
3892 cz_pb_mgr.g_cz_ui_pages_capt_id_ref(l_rec_count) := l_cz_ui_pages_capt_id_tbl(uidefref);
3893 cz_pb_mgr.g_pages_ui_def_old_ref(l_rec_count) := l_cz_ui_pages_ui_def_tbl(uidefref);
3894 cz_pb_mgr.g_cz_ui_old_jrad_doc_ref(l_rec_count) := l_cz_ui_pages_jrad_doc_tbl(uidefref);
3895 cz_pb_mgr.g_cz_ui_pages_stat_templ(l_rec_count) := l_cz_page_stat_templ_tbl(uidefref);
3896 cz_pb_mgr.g_cz_ui_pages_stat_ui(l_rec_count) := l_cz_page_stat_uidef_tbl(uidefref);
3897 -- cz_pb_mgr.v_intl_text_model_tbl(l_rec_count) := -1;
3898 cz_pb_mgr.g_cz_uipg_tmplid_tbl(l_rec_count) := l_cz_ui_pages_pgtmplid_tbl(uidefref);
3899 cz_pb_mgr.g_cz_uipg_tmplui_tbl(l_rec_count) := l_cz_ui_pages_pgtmplui_tbl(uidefref);
3900 cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl(l_rec_count) := l_cz_ui_pages_dis_cond_tbl(uidefref);
3901 cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl(l_rec_count) := l_cz_ui_pages_enb_cond_tbl(uidefref);
3902 cz_pb_mgr.g_cz_ui_pages_expl_tbl(l_rec_count) := l_cz_ui_pages_expl_node_tbl(uidefref);
3903 END LOOP;
3904 END IF;
3905 END LOOP;
3906 END IF;
3907 EXCEPTION
3908 WHEN NO_DATA_FOUND
3909 THEN
3910 NULL;
3911 WHEN OTHERS
3912 THEN
3913 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_pages', 'SQLERRM', SQLERRM);
3914 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGES', SQLCODE);
3915 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
3916 RAISE;
3917 END bulk_collect_ui_pages;
3918
3919 -------------------------------------------------------------------------
3920 -------insert into cz_ui_pages
3921 PROCEDURE insert_into_ui_pages
3922 IS
3923 rec_count NUMBER := 0;
3924 plsql_table_list cz_pb_mgr.col_plsql_table_list;
3925 BEGIN
3926 pbdebug := 22030;
3927
3928 IF (cz_pb_mgr.g_pages_ui_def_old_ref.COUNT > 0)
3929 THEN
3930 ----resolve ui_def_id of ui pages
3931 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');
3932
3933 -- resolve page status and outer page templates
3934 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
3935 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');
3936 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);
3937 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');
3938 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);
3939 END IF;
3940
3941 ----caption ids of ui pages
3942 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');
3943
3944 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');
3945 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');
3946 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');
3947 plsql_table_list.DELETE;
3948 rec_count := 1;
3949 plsql_table_list(rec_count).col_name := 'ui_def_id';
3950 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_ui_def_ref';
3951 rec_count := rec_count + 1;
3952 plsql_table_list(rec_count).col_name := 'jrad_doc';
3953 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref';
3954 rec_count := rec_count + 1;
3955 plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPLATE_ID';
3956 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_templ';
3957 rec_count := rec_count + 1;
3958 plsql_table_list(rec_count).col_name := 'PAGE_STATUS_TEMPL_UIDEF_ID';
3959 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_stat_ui';
3960 rec_count := rec_count + 1;
3961 plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPLATE_ID';
3962 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplid_tbl';
3963 rec_count := rec_count + 1;
3964 plsql_table_list(rec_count).col_name := 'OUTER_PAGE_TEMPL_UIDEF_ID';
3965 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_uipg_tmplui_tbl';
3966 rec_count := rec_count + 1;
3967 plsql_table_list(rec_count).col_name := 'DISPLAY_CONDITION_ID';
3968 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_dis_cond_tbl';
3969 rec_count := rec_count + 1;
3970 plsql_table_list(rec_count).col_name := 'ENABLED_CONDITION_ID';
3974 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_expl_tbl';
3971 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_enb_cond_tbl';
3972 rec_count := rec_count + 1;
3973 plsql_table_list(rec_count).col_name := 'PAGEBASE_EXPL_NODE_ID';
3975 rec_count := rec_count + 1;
3976 plsql_table_list(rec_count).col_name := 'CAPTION_TEXT_ID';
3977 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cz_ui_pages_capt_id_ref';
3978 insert_into_table('cz_ui_pages'
3979 ,'ui_def_id'
3980 ,'jrad_doc'
3981 ,cz_pb_mgr.v_db_link
3982 ,plsql_table_list
3983 ,'cz_pb_mgr.g_pages_ui_def_old_ref'
3984 ,'cz_pb_mgr.g_cz_ui_old_jrad_doc_ref'
3985 ,cz_pb_mgr.g_pages_ui_def_old_ref
3986 ,cz_pb_mgr.g_cz_ui_old_jrad_doc_ref
3987 );
3988 END IF;
3989 END insert_into_ui_pages;
3990
3991 ----------------------------------------------------------
3992 ---------bulk collect ui page sets
3993 PROCEDURE bulk_collect_page_sets
3994 IS
3995 l_rec_count NUMBER := 0;
3996 l_page_sets_ui_tbl cz_pb_mgr.t_ref;
3997 l_page_sets_pg_tbl cz_pb_mgr.t_ref;
3998 l_pagebase_expl_tbl cz_pb_mgr.t_ref;
3999 l_train_jrad_doc_tbl varchar_type_tbl;
4000 BEGIN
4001 pbdebug := 22031;
4002
4003 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4004 THEN
4005 cz_pb_mgr.g_page_sets_ui_old_ref.DELETE;
4006 cz_pb_mgr.g_page_sets_ui_ref.DELETE;
4007 cz_pb_mgr.g_page_sets_pg_tbl.DELETE;
4008 cz_pb_mgr.g_page_sets_jrad_doc_ref.DELETE;
4009 cz_pb_mgr.g_page_sets_expl_tbl.DELETE;
4010
4011 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
4012 LOOP
4013 SELECT ui_def_id, page_set_id, train_jrad_doc, pagebase_expl_node_id
4014 BULK COLLECT INTO l_page_sets_ui_tbl, l_page_sets_pg_tbl, l_train_jrad_doc_tbl, l_pagebase_expl_tbl
4015 FROM cz_ui_page_sets
4016 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);
4017
4018 IF (l_page_sets_ui_tbl.COUNT > 0)
4019 THEN
4020 l_rec_count := cz_pb_mgr.g_page_sets_ui_old_ref.COUNT;
4021
4022 FOR pageset IN l_page_sets_ui_tbl.FIRST .. l_page_sets_ui_tbl.LAST
4023 LOOP
4024 l_rec_count := l_rec_count + 1;
4025 cz_pb_mgr.g_page_sets_ui_old_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4026 --cz_pb_mgr.g_page_sets_ui_ref(l_rec_count) := l_page_sets_ui_tbl(pageset);
4027 cz_pb_mgr.g_page_sets_pg_tbl(l_rec_count) := l_page_sets_pg_tbl(pageset);
4028 cz_pb_mgr.g_page_sets_jrad_doc_ref(l_rec_count) := l_train_jrad_doc_tbl(pageset);
4029 cz_pb_mgr.g_page_sets_expl_tbl(l_rec_count) := l_pagebase_expl_tbl(pageset);
4030 END LOOP;
4031 END IF;
4032 END LOOP;
4033 END IF;
4034 EXCEPTION
4035 WHEN NO_DATA_FOUND
4036 THEN
4037 NULL;
4038 WHEN OTHERS
4039 THEN
4040 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4041 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGESETS', SQLCODE);
4042 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4043 RAISE;
4044 END bulk_collect_page_sets;
4045
4046 ---------------------------------------------------------------
4047 ----insert into cz_ui_page_sets
4048 PROCEDURE insert_into_ui_page_sets
4049 IS
4050 rec_count NUMBER := 0;
4051 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4052 BEGIN
4053 IF (cz_pb_mgr.g_page_sets_ui_old_ref.COUNT > 0)
4054 THEN
4055 pbdebug := 22032;
4056 ----resolve ui_def_id of page sets
4057 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');
4058 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');
4059 plsql_table_list.DELETE;
4060 rec_count := 1;
4061 plsql_table_list(rec_count).col_name := 'ui_def_id';
4062 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_ui_ref';
4063 rec_count := rec_count + 1;
4064 plsql_table_list(rec_count).col_name := 'train_jrad_doc';
4065 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_jrad_doc_ref';
4066 rec_count := rec_count + 1;
4067 plsql_table_list(rec_count).col_name := 'pagebase_expl_node_id';
4068 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_sets_expl_tbl';
4069 insert_into_table('cz_ui_page_sets'
4070 ,'ui_def_id'
4071 ,'page_set_id'
4072 ,cz_pb_mgr.v_db_link
4073 ,plsql_table_list
4074 ,'cz_pb_mgr.g_page_sets_ui_old_ref'
4075 ,'cz_pb_mgr.g_page_sets_pg_tbl'
4076 ,cz_pb_mgr.g_page_sets_ui_old_ref
4077 ,cz_pb_mgr.g_page_sets_pg_tbl
4078 );
4079 END IF;
4080 EXCEPTION
4084 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGESETS', SQLCODE);
4081 WHEN OTHERS
4082 THEN
4083 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_sets', 'SQLERRM', SQLERRM);
4085 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4086 RAISE;
4087 END insert_into_ui_page_sets;
4088
4089 ------------------------------------------------------------------------
4090 -----bulk collect from page refs
4091 PROCEDURE bulk_collect_page_refs
4092 IS
4093 l_page_refs_set_id_tbl cz_pb_mgr.t_ref;
4094 l_page_refs_ui_def_tbl cz_pb_mgr.t_ref;
4095 l_page_refs_pg_ref_id_tbl cz_pb_mgr.t_ref;
4096 l_page_refs_cond_id_tbl cz_pb_mgr.t_ref;
4097 l_page_refs_capt_id_tbl cz_pb_mgr.t_ref;
4098 l_page_refs_prop_id_tbl cz_pb_mgr.t_ref;
4099 l_page_refs_tgt_ui_tbl cz_pb_mgr.t_ref;
4100 l_page_refs_tgt_pg_set_tbl cz_pb_mgr.t_ref;
4101 l_page_refs_tgt_pg_id_tbl cz_pb_mgr.t_ref;
4102 l_page_refs_pg_set_tbl cz_pb_mgr.t_ref;
4103 l_page_refs_pg_ref_tbl cz_pb_mgr.t_ref;
4104 l_page_refs_tgt_expl_tbl cz_pb_mgr.t_ref;
4105 l_page_refs_cpt_rule_tbl cz_pb_mgr.t_ref;
4106 rec_count NUMBER := 0;
4107 BEGIN
4108 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4109 THEN
4110 cz_pb_mgr.g_page_refs_ui_def_old_ref.DELETE;
4111 cz_pb_mgr.g_page_refs_ui_def_new_ref.DELETE;
4112 cz_pb_mgr.g_page_refs_cond_id_ref.DELETE;
4113 cz_pb_mgr.g_page_refs_capt_id_ref.DELETE;
4114 cz_pb_mgr.g_page_refs_tgt_ui_ref.DELETE;
4115 cz_pb_mgr.g_page_refs_pg_set_ref.DELETE;
4116 cz_pb_mgr.g_page_refs_pg_ref_ref.DELETE;
4117 -- cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
4118 -- cz_pb_mgr.v_intl_text_model_tbl.DELETE;
4119 cz_pb_mgr.g_page_refs_tgt_expl_tbl.DELETE;
4120 cz_pb_mgr.g_page_refs_cpt_rule_tbl.DELETE;
4121 pbdebug := 22033;
4122
4123 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
4124 LOOP
4125 l_page_refs_ui_def_tbl.DELETE;
4126 l_page_refs_cond_id_tbl.DELETE;
4127 l_page_refs_capt_id_tbl.DELETE;
4128 l_page_refs_tgt_ui_tbl.DELETE;
4129 l_page_refs_tgt_expl_tbl.DELETE;
4130 l_page_refs_cpt_rule_tbl.DELETE;
4131
4132 SELECT ui_def_id, page_set_id, page_ref_id, condition_id, caption_text_id
4133 ,target_ui_def_id, target_expl_node_id, caption_rule_id
4134 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
4135 ,l_page_refs_tgt_ui_tbl, l_page_refs_tgt_expl_tbl, l_page_refs_cpt_rule_tbl
4136 FROM cz_ui_page_refs
4137 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;
4138
4139 IF (l_page_refs_ui_def_tbl.COUNT > 0)
4140 THEN
4141 rec_count := cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT;
4142
4143 FOR pageref IN l_page_refs_ui_def_tbl.FIRST .. l_page_refs_ui_def_tbl.LAST
4144 LOOP
4145 rec_count := rec_count + 1;
4146 -- cz_pb_mgr.g_page_refs_ui_def_new_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4147 cz_pb_mgr.g_page_refs_ui_def_old_ref(rec_count) := l_page_refs_ui_def_tbl(pageref);
4148 -- cz_pb_mgr.v_intl_text_ui_tbl(rec_count) := l_page_refs_ui_def_tbl(pageref);
4149 -- cz_pb_mgr.v_intl_text_model_tbl(rec_count) := -1;
4150 cz_pb_mgr.g_page_refs_pg_set_ref(rec_count) := l_page_refs_pg_set_tbl(pageref);
4151 cz_pb_mgr.g_page_refs_pg_ref_ref(rec_count) := l_page_refs_pg_ref_tbl(pageref);
4152 cz_pb_mgr.g_page_refs_cond_id_ref(rec_count) := l_page_refs_cond_id_tbl(pageref);
4153 cz_pb_mgr.g_page_refs_capt_id_ref(rec_count) := l_page_refs_capt_id_tbl(pageref);
4154 cz_pb_mgr.g_page_refs_tgt_ui_ref(rec_count) := l_page_refs_tgt_ui_tbl(pageref);
4155 cz_pb_mgr.g_page_refs_tgt_expl_tbl(rec_count) := l_page_refs_tgt_expl_tbl(pageref);
4156 cz_pb_mgr.g_page_refs_cpt_rule_tbl(rec_count) := l_page_refs_cpt_rule_tbl(pageref);
4157 END LOOP;
4158 END IF;
4159 END LOOP;
4160 END IF;
4161 EXCEPTION
4162 WHEN NO_DATA_FOUND
4163 THEN
4164 NULL;
4165 WHEN OTHERS
4166 THEN
4167 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4168 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPAGEREFS', SQLCODE);
4169 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4170 RAISE;
4171 END bulk_collect_page_refs;
4172
4173 -------------------------------------------------
4174 ------insert into page refs
4175 PROCEDURE insert_into_ui_page_refs
4176 IS
4177 rec_count NUMBER := 0;
4178 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4179 BEGIN
4180 IF (cz_pb_mgr.g_page_refs_ui_def_old_ref.COUNT > 0)
4181 THEN
4182 pbdebug := 22034;
4183 ----resolve ui_def_id
4184 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 sets');
4185 ---create rules for g_page_refs_cond_id_ref
4186 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 sets');
4190 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');
4187 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 sets');
4188 ----caption ids of ui pages
4189 -----insert_intl_texts(cz_pb_mgr.g_page_refs_capt_id_ref,'caption ids of cz ui page refs');
4191 ----resolve expl id
4192 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');
4193 plsql_table_list.DELETE;
4194 rec_count := 1;
4195 plsql_table_list(rec_count).col_name := 'ui_def_id';
4196 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_ui_def_new_ref';
4197 rec_count := rec_count + 1;
4198 plsql_table_list(rec_count).col_name := 'caption_text_id';
4199 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_capt_id_ref';
4200 rec_count := rec_count + 1;
4201 plsql_table_list(rec_count).col_name := 'target_ui_def_id';
4202 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_ui_ref';
4203 rec_count := rec_count + 1;
4204 plsql_table_list(rec_count).col_name := 'target_expl_node_id';
4205 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_tgt_expl_tbl';
4206 rec_count := rec_count + 1;
4207 plsql_table_list(rec_count).col_name := 'caption_rule_id';
4208 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cpt_rule_tbl';
4209 rec_count := rec_count + 1;
4210 plsql_table_list(rec_count).col_name := 'condition_id';
4211 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_page_refs_cond_id_ref';
4212 -- should call resolve_ids instead
4213 resolve_ref_ids_not_found(cz_pb_mgr.g_page_refs_ui_def_new_ref
4214 ,cz_pb_mgr.v_cz_ui_defs_old_ref
4215 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4216 ,cz_pb_mgr.g_page_refs_tgt_ui_ref
4217 ,'cz_ui_page_refs.target_ui_def_id'
4218 ,cz_pb_mgr.v_status_code
4219 );
4220 insert_into_table('cz_ui_page_refs'
4221 ,'ui_def_id'
4222 ,'page_set_id'
4223 ,'page_ref_id'
4224 ,cz_pb_mgr.v_db_link
4225 ,plsql_table_list
4226 ,'cz_pb_mgr.g_page_refs_ui_def_old_ref'
4227 ,'cz_pb_mgr.g_page_refs_pg_set_ref'
4228 ,'cz_pb_mgr.g_page_refs_pg_ref_ref'
4229 ,cz_pb_mgr.g_page_refs_ui_def_old_ref
4230 ,cz_pb_mgr.g_page_refs_pg_set_ref
4231 ,cz_pb_mgr.g_page_refs_pg_ref_ref
4232 );
4233 END IF;
4234 EXCEPTION
4235 WHEN OTHERS
4236 THEN
4237 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_refs', 'SQLERRM', SQLERRM);
4238 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPAGEREFS', SQLCODE);
4239 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4240 RAISE;
4241 END insert_into_ui_page_refs;
4242
4243 --------------------------------------------------
4244 -----bulk collect from ui refs
4245 PROCEDURE bulk_collect_ui_refs
4246 IS
4247 l_ui_refs_ui_def_tbl cz_pb_mgr.t_ref;
4248 l_ui_refs_ref_ui_def_tbl cz_pb_mgr.t_ref;
4249 l_ui_refs_expl_id_tbl cz_pb_mgr.t_ref;
4250 rec_count NUMBER := 0;
4251 BEGIN
4252 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4253 THEN
4254 cz_pb_mgr.g_ui_refs_old_ui_def_ref.DELETE;
4255 cz_pb_mgr.g_ui_refs_new_ui_def_ref.DELETE;
4256 cz_pb_mgr.g_ui_refs_ref_ui_def_ref.DELETE;
4257 cz_pb_mgr.g_ui_refs_expl_id_ref.DELETE;
4258 cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref.DELETE;
4259 cz_pb_mgr.g_ui_refs_expl_id_old_ref.DELETE;
4260
4261 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
4262 LOOP
4263 l_ui_refs_ui_def_tbl.DELETE;
4264 l_ui_refs_ref_ui_def_tbl.DELETE;
4265 l_ui_refs_expl_id_tbl.DELETE;
4266
4267 SELECT ui_def_id, ref_ui_def_id, model_ref_expl_id
4268 BULK COLLECT INTO l_ui_refs_ui_def_tbl, l_ui_refs_ref_ui_def_tbl, l_ui_refs_expl_id_tbl
4269 FROM cz_ui_refs
4270 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;
4271
4272 IF (l_ui_refs_ui_def_tbl.COUNT > 0)
4273 THEN
4274 rec_count := cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT;
4275
4276 FOR uiref IN l_ui_refs_ui_def_tbl.FIRST .. l_ui_refs_ui_def_tbl.LAST
4277 LOOP
4278 rec_count := rec_count + 1;
4279 cz_pb_mgr.g_ui_refs_old_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4280 -- cz_pb_mgr.g_ui_refs_new_ui_def_ref(rec_count) := l_ui_refs_ui_def_tbl(uiref);
4281 cz_pb_mgr.g_ui_refs_ref_ui_def_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4282 cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref(rec_count) := l_ui_refs_ref_ui_def_tbl(uiref);
4283 cz_pb_mgr.g_ui_refs_expl_id_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4284 cz_pb_mgr.g_ui_refs_expl_id_old_ref(rec_count) := l_ui_refs_expl_id_tbl(uiref);
4285 END LOOP;
4286 END IF;
4287 END LOOP;
4291 THEN
4288 END IF;
4289 EXCEPTION
4290 WHEN NO_DATA_FOUND
4292 NULL;
4293 WHEN OTHERS
4294 THEN
4295 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
4296 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIREFS', SQLCODE);
4297 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4298 RAISE;
4299 END bulk_collect_ui_refs;
4300
4301 -----------------------------------------------------------------
4302 ------insert into cz_ui_refs
4303 PROCEDURE insert_into_ui_refs
4304 IS
4305 rec_count NUMBER := 0;
4306 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4307 BEGIN
4308 IF (cz_pb_mgr.g_ui_refs_old_ui_def_ref.COUNT > 0)
4309 THEN
4310 ----resolve ui_def_id
4311 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');
4312 ----resolve model ref expl id
4313 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');
4314 plsql_table_list.DELETE;
4315 rec_count := 1;
4316 plsql_table_list(rec_count).col_name := 'ui_def_id';
4317 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_new_ui_def_ref';
4318 rec_count := rec_count + 1;
4319 plsql_table_list(rec_count).col_name := 'ref_ui_def_id';
4320 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_ref_ui_def_ref';
4321 rec_count := rec_count + 1;
4322 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
4323 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_refs_expl_id_ref';
4324 -- should call resolve_ids instead
4325 resolve_ref_ids_not_found(cz_pb_mgr.g_ui_refs_new_ui_def_ref
4326 ,cz_pb_mgr.v_cz_ui_defs_old_ref
4327 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4328 ,cz_pb_mgr.g_ui_refs_ref_ui_def_ref
4329 ,'cz_ui_refs.ref_ui_def_id'
4330 ,cz_pb_mgr.v_status_code
4331 );
4332 insert_into_table('cz_ui_refs'
4333 ,'ui_def_id'
4334 ,'ref_ui_def_id'
4335 ,'model_ref_expl_id'
4336 ,cz_pb_mgr.v_db_link
4337 ,plsql_table_list
4338 ,'cz_pb_mgr.g_ui_refs_old_ui_def_ref'
4339 ,'cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref'
4340 ,'cz_pb_mgr.g_ui_refs_expl_id_old_ref'
4341 ,cz_pb_mgr.g_ui_refs_old_ui_def_ref
4342 ,cz_pb_mgr.g_ui_refs_ref_ui_def_old_ref
4343 ,cz_pb_mgr.g_ui_refs_expl_id_old_ref
4344 );
4345 END IF;
4346
4347 COMMIT;
4348 EXCEPTION
4349 WHEN OTHERS
4350 THEN
4351 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_refs', 'SQLERRM', SQLERRM);
4352 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIREFS', SQLCODE);
4353 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4354 RAISE;
4355 END;
4356
4357 ------------------------------------------------------------
4358 -----bulk collect from ui ps maps
4359 PROCEDURE bulk_collect_ui_ps_maps
4360 IS
4361 l_ui_ps_maps_ui_def_tbl cz_pb_mgr.t_ref;
4362 l_ui_ps_maps_ctrl_tmp_tbl cz_pb_mgr.t_ref;
4363 l_ui_ps_maps_page_id_tbl cz_pb_mgr.t_ref;
4364 l_ui_ps_maps_expl_id_tbl cz_pb_mgr.t_ref;
4365 l_ui_ps_maps_elem_sig_tbl cz_pb_mgr.t_ref;
4366 l_ui_ps_maps_ctrl_temp_ui_tbl cz_pb_mgr.t_ref;
4367 l_ui_ps_maps_element_tbl varchar_type_tbl;
4368 l_ui_ps_maps_tgt_pg_ui_def_tbl cz_pb_mgr.t_ref;
4369 rec_count NUMBER := 0;
4370 BEGIN
4371 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
4372 THEN
4373 cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.DELETE;
4374 cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref.DELETE;
4375 cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref.DELETE;
4376 cz_pb_mgr.g_ui_ps_maps_page_id_tbl.DELETE;
4377 cz_pb_mgr.g_ui_ps_maps_element_tbl.DELETE;
4378 cz_pb_mgr.g_ui_ps_maps_expl_id_tbl.DELETE;
4379 cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl.DELETE;
4380 cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl.DELETE;
4381 cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
4382
4383 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
4384 LOOP
4385 l_ui_ps_maps_ui_def_tbl.DELETE;
4386 l_ui_ps_maps_ctrl_tmp_tbl.DELETE;
4387 l_ui_ps_maps_page_id_tbl.DELETE;
4388 l_ui_ps_maps_element_tbl.DELETE;
4389 l_ui_ps_maps_expl_id_tbl.DELETE;
4390 l_ui_ps_maps_ctrl_temp_ui_tbl.DELETE;
4391 l_ui_ps_maps_elem_sig_tbl.DELETE;
4392 l_ui_ps_maps_tgt_pg_ui_def_tbl.DELETE;
4393
4394 BEGIN
4395 SELECT ui_def_id, ctrl_template_id, page_id, element_id
4396 ,model_ref_expl_id, ctrl_template_ui_def_id, element_signature_id, target_page_ui_def_id
4397 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
4398 ,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
4399 FROM cz_ui_page_elements
4403 WHEN NO_DATA_FOUND
4400 WHERE cz_ui_page_elements.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_oa_ref(uidef)
4401 AND cz_ui_page_elements.deleted_flag = record_not_deleted;
4402 EXCEPTION
4404 THEN
4405 NULL;
4406 END;
4407
4408 IF (l_ui_ps_maps_ui_def_tbl.COUNT > 0)
4409 THEN
4410 rec_count := cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT;
4411
4412 FOR uimap IN l_ui_ps_maps_ui_def_tbl.FIRST .. l_ui_ps_maps_ui_def_tbl.LAST
4413 LOOP
4414 rec_count := rec_count + 1;
4415 cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
4416 -- cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref(rec_count) := l_ui_ps_maps_ui_def_tbl(uimap);
4417 cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref(rec_count) := l_ui_ps_maps_ctrl_tmp_tbl(uimap);
4418 cz_pb_mgr.g_ui_ps_maps_page_id_tbl(rec_count) := l_ui_ps_maps_page_id_tbl(uimap);
4419 cz_pb_mgr.g_ui_ps_maps_element_tbl(rec_count) := l_ui_ps_maps_element_tbl(uimap);
4420 cz_pb_mgr.g_ui_ps_maps_expl_id_tbl(rec_count) := l_ui_ps_maps_expl_id_tbl(uimap);
4421 cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl(rec_count) := l_ui_ps_maps_ctrl_temp_ui_tbl(uimap);
4422 cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl(rec_count) := l_ui_ps_maps_elem_sig_tbl(uimap);
4423 cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl(rec_count) := l_ui_ps_maps_tgt_pg_ui_def_tbl(uimap);
4424 END LOOP;
4425 END IF;
4426 END LOOP;
4427 END IF;
4428 EXCEPTION
4429 WHEN OTHERS
4430 THEN
4431 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_ps_maps', 'SQLERRM', SQLERRM);
4432 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIPSMAPS', SQLCODE);
4433 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4434 RAISE;
4435 END bulk_collect_ui_ps_maps;
4436
4437 ------------------------------------------------------------------------
4438 ----insert into ui_ps_maps
4439 PROCEDURE insert_ui_ps_maps
4440 IS
4441 rec_count NUMBER := 0;
4442 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4443 BEGIN
4444 IF (cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref.COUNT > 0)
4445 THEN
4446 ----resolve ui_def_id
4447 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');
4448
4449 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
4450 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');
4451 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);
4452 END IF;
4453
4454 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');
4455 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);
4456
4457 plsql_table_list.DELETE;
4458 rec_count := 1;
4459 plsql_table_list(rec_count).col_name := 'ui_def_id';
4460 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref';
4461 rec_count := rec_count + 1;
4462 plsql_table_list(rec_count).col_name := 'ctrl_template_id';
4463 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_ctrl_tmp_ref';
4464 rec_count := rec_count + 1;
4465 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
4466 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_expl_id_tbl';
4467 rec_count := rec_count + 1;
4468 plsql_table_list(rec_count).col_name := 'ctrl_template_ui_def_id';
4469 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_templ_ui_tbl';
4470 rec_count := rec_count + 1;
4471 plsql_table_list(rec_count).col_name := 'element_signature_id';
4472 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl';
4473 rec_count := rec_count + 1;
4474 plsql_table_list(rec_count).col_name := 'TARGET_PAGE_UI_DEF_ID';
4475 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl';
4476 -- should call resolve_ids instead
4477 resolve_ref_ids_not_found(cz_pb_mgr.g_ui_ps_maps_new_ui_def_ref
4478 ,cz_pb_mgr.v_cz_ui_defs_old_ref
4479 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
4480 ,cz_pb_mgr.g_ui_ps_maps_tgt_pg_ui_def_tbl
4481 ,'cz_ui_page_elements.target_page_ui_def_id'
4482 ,cz_pb_mgr.v_status_code
4483 );
4484 insert_into_table('cz_ui_page_elements'
4485 ,'ui_def_id'
4486 ,'page_id'
4487 ,'element_id'
4488 ,cz_pb_mgr.v_db_link
4489 ,plsql_table_list
4490 ,'cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref'
4491 ,'cz_pb_mgr.g_ui_ps_maps_page_id_tbl'
4492 ,'cz_pb_mgr.g_ui_ps_maps_element_tbl'
4493 ,cz_pb_mgr.g_ui_ps_maps_old_ui_def_ref
4494 ,cz_pb_mgr.g_ui_ps_maps_page_id_tbl
4495 ,cz_pb_mgr.g_ui_ps_maps_element_tbl
4496 );
4497 END IF;
4501 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_page_elements', 'SQLERRM', SQLERRM);
4498 EXCEPTION
4499 WHEN OTHERS
4500 THEN
4502 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UIPSMAPS', SQLCODE);
4503 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4504 RAISE;
4505 END insert_ui_ps_maps;
4506 ------------------------------------------------------------
4507 PROCEDURE insert_template_elements(
4508 p_template_id IN NUMBER
4509 ,p_ui_def_id IN NUMBER
4510 ,p_element_type IN NUMBER
4511 ,p_element_id IN NUMBER
4512 ,p_persistent_element_id IN NUMBER
4513 ,p_link_name IN VARCHAR2
4514 )
4515 IS
4516 l_str VARCHAR2(2000);
4517
4518 --Bug 5525718 - In case of migration the ui_def_id should be 0
4519
4520 l_ui_def_id NUMBER := 1;
4521 l_persistent_element_id CZ_UI_TEMPLATE_ELEMENTS.persistent_element_id%TYPE := p_persistent_element_id;
4522
4523 BEGIN
4524
4525 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
4526 l_ui_def_id := 0;
4527 l_persistent_element_id := p_element_id;
4528 END IF;
4529
4530 l_str :=
4531 'insert into cz_ui_template_elements'
4532 || p_link_name
4533 || ' (TEMPLATE_ID,UI_DEF_ID,'
4534 || ' '
4535 || 'ELEMENT_TYPE,ELEMENT_ID,PERSISTENT_ELEMENT_ID,DELETED_FLAG,seeded_flag)'
4536 || ' '
4537 || 'VALUES (:1,:2,:3,:4,:5,''0'',''0'') ';
4538
4539 EXECUTE IMMEDIATE l_str
4540 USING p_template_id,l_ui_def_id, p_element_type, p_element_id, l_persistent_element_id;
4541 EXCEPTION
4542 WHEN OTHERS
4543 THEN
4544 RAISE;
4545 END insert_template_elements;
4546
4547 -----------------------------------------
4548 PROCEDURE update_template_elements(p_template_id IN NUMBER, p_ui_def_id IN NUMBER, p_link_name IN VARCHAR2)
4549 IS
4550 l_str VARCHAR2(2000);
4551 BEGIN
4552 l_str :=
4553 'DELETE FROM cz_ui_template_elements' || p_link_name || ' t' || ' ' || 'WHERE t.template_id = :1' || ' ' || 'AND t.ui_def_id = :2' ;
4554
4555 EXECUTE IMMEDIATE l_str
4556 USING p_template_id, p_ui_def_id;
4557 EXCEPTION
4558 WHEN OTHERS
4559 THEN
4560 RAISE;
4561 END update_template_elements;
4562
4563 -------------------------------------------
4564 PROCEDURE create_uit_publication(
4565 p_template_id IN NUMBER
4566 ,p_old_templ_id IN NUMBER
4567 ,p_source_tgt_flag IN VARCHAR2
4568 ,p_link_name IN VARCHAR2
4569 ,p_server_id IN NUMBER
4570 ,p_src_id IN NUMBER
4571 ,p_tgt_id IN NUMBER
4572 )
4573 IS
4574 l_inst_str VARCHAR2(2000);
4575 l_uit_date DATE;
4576 l_applicable_from DATE := cz_utils.epoch_begin;
4577 l_applicable_until DATE := cz_utils.epoch_end;
4578 l_status NUMBER := 0;
4579 l_ref_cursor ref_cursor;
4580 l_src_pb_id cz_model_publications.publication_id%TYPE;
4581 l_tgt_pb_id cz_model_publications.publication_id%TYPE;
4582 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
4583 BEGIN
4584 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
4585 THEN
4586 l_inst_str :=
4587 'UPDATE cz_model_publications'
4588 || p_link_name
4589 || ' t'
4590 || ' '
4591 || 'SET t.last_update_date = sysdate'
4592 || ' '
4593 || 'WHERE t.object_id = :1'
4594 || ' '
4595 || 'AND t.object_type = ''UIT'''
4596 || ' '
4597 || 'AND t.server_id = :2'
4598 || ' '
4599 || 'AND t.source_target_flag = :3'
4600 || ' '
4601 || 'AND t.deleted_flag = ''0'' ';
4602
4603 EXECUTE IMMEDIATE l_inst_str
4604 USING p_template_id, cz_pb_mgr.v_server_id, p_source_tgt_flag;
4605
4606 IF (SQL%ROWCOUNT = 0)
4607 THEN
4608 IF (p_source_tgt_flag = g_source_flag)
4609 THEN
4610 l_src_pb_id := p_src_id;
4611 l_tgt_pb_id := p_tgt_id;
4612 ELSIF(p_source_tgt_flag = g_target_flag)
4613 THEN
4614 l_src_pb_id := p_tgt_id;
4615 l_tgt_pb_id := p_src_id;
4616 END IF;
4617
4618 l_inst_str :=
4619 'INSERT INTO cz_model_publications'
4620 || p_link_name
4621 || ' '
4622 || '(PUBLICATION_ID,'
4623 || ' '
4624 || 'MODEL_ID,'
4625 || ' '
4626 || 'OBJECT_ID,'
4627 || ' '
4628 || 'OBJECT_TYPE,'
4629 || ' '
4630 || 'SERVER_ID,'
4631 || ' '
4632 || 'PUBLICATION_MODE,'
4633 || ' '
4634 || 'UI_DEF_ID,'
4635 || ' '
4636 || 'UI_STYLE,'
4637 || ' '
4638 || 'APPLICABLE_FROM,'
4639 || ' '
4640 || 'APPLICABLE_UNTIL,'
4641 || ' '
4642 || 'EXPORT_STATUS,'
4643 || ' '
4644 || 'DELETED_FLAG,'
4645 || ' '
4646 || 'MODEL_LAST_STRUCT_UPDATE,'
4650 || 'MODEL_LAST_UPDATED,'
4647 || ' '
4648 || 'MODEL_LAST_LOGIC_UPDATE,'
4649 || ' '
4651 || ' '
4652 || 'SOURCE_TARGET_FLAG,'
4653 || ' '
4654 || 'SOURCE_MODEL_ID,'
4655 || ' '
4656 || 'disabled_flag,'
4657 || ' '
4658 || 'remote_publication_id )'
4659 || ' '
4660 || 'SELECT :1,:2,:3,''UIT'',:4,'''
4661 || l_pub_mode
4662 || ''',1,7,:5,:6,''OK'',''0'',sysdate,sysdate,sysdate,:7,:8, 0,:9 FROM dual';
4663
4664 EXECUTE IMMEDIATE l_inst_str
4665 USING l_src_pb_id
4666 ,p_template_id
4667 ,p_template_id
4668 ,p_server_id
4669 ,l_applicable_from
4670 ,l_applicable_until
4671 ,p_source_tgt_flag
4672 ,p_old_templ_id
4673 ,l_tgt_pb_id;
4674 END IF;
4675 END IF;
4676
4677 COMMIT;
4678 EXCEPTION
4679 WHEN OTHERS
4680 THEN
4681 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4682 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
4683 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
4684 RAISE;
4685 END create_uit_publication;
4686
4687 --------------------------------
4688 PROCEDURE insert_template_elements
4689 IS
4690 l_src_pb_id NUMBER;
4691 l_tgt_pb_id NUMBER;
4692 rec_count NUMBER := 0;
4693
4694 l_upd_template_ids_tbl t_ref;
4695 l_str VARCHAR2(4000);
4696 l_ui_def_id NUMBER;
4697
4698 BEGIN
4699 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))
4700 THEN
4701
4702 IF (CZ_PB_MGR.v_session_parameter = cz_model_migration_pvt.migrate_model)
4703 THEN
4704 l_ui_def_id := 0;
4705 ELSE
4706 l_ui_def_id := 1;
4707 END IF;
4708
4709 l_str := 'update cz_ui_templates'|| CZ_PB_MGR.v_db_link || ' set template_rev_nbr=template_rev_nbr+1 '
4710 || ' where template_id=:1 and ui_def_id=:2';
4711
4712 FOR i IN l_template_id_ref.FIRST..l_template_id_ref.LAST
4713 LOOP
4714 IF NOT(l_upd_template_ids_tbl.EXISTS(l_template_id_ref(i))) THEN
4715 update_template_elements(l_template_id_ref(i), l_ui_def_id, CZ_PB_MGR.v_db_link);
4716
4717 IF l_ui_def_id = 0 THEN -- bump up template_rev_nvr only in case of Migration --
4718 EXECUTE IMMEDIATE l_str
4719 USING CZ_PB_MGR.l_template_id_ref(i), l_ui_def_id;
4720 END IF;
4721
4722 l_upd_template_ids_tbl(l_template_id_ref(i)) := i;
4723 END IF;
4724 END LOOP;
4725
4726 --Removing a call to resolve_ids here. The problem with this call is that l_element_id_ref table contains elements of all
4727 --types (rules, texts and actions), while the resolution was made against g_ui_actions_id_idx_ref, which contains only
4728 --actions. So, there was a possibility that some other element type id will get overriden. The resolution is moved to the
4729 --collect_global_actions procedure.
4730 FOR i IN CZ_PB_MGR.l_template_id_ref.FIRST .. CZ_PB_MGR.l_template_id_ref.LAST
4731 LOOP
4732 -----insert into cz_ui_template_elements
4733 insert_template_elements(CZ_PB_MGR.l_template_id_ref(i)
4734 ,l_ui_def_id
4735 ,CZ_PB_MGR.l_element_type_ref(i)
4736 ,CZ_PB_MGR.l_element_id_ref(i)
4737 ,CZ_PB_MGR.l_pers_elem_ref(i)
4738 ,CZ_PB_MGR.v_db_link
4739 );
4740 END LOOP;
4741
4742 END IF;
4743
4744 COMMIT;
4745
4746 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)
4747 THEN
4748 -- array already has the new ids
4749 -- resolve_ids(cz_pb_mgr.g_ui_templates_new_temp_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'resolve global templates');
4750
4751 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
4752 LOOP
4753 IF (cz_pb_mgr.g_ui_templates_ui_def_old_ref(i) = 0)
4754 THEN
4755 SELECT cz_model_publications_s.NEXTVAL
4756 INTO l_src_pb_id
4757 FROM DUAL;
4758
4759 l_tgt_pb_id :=
4760 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
4761 , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
4762 ,cz_pb_mgr.v_oraclesequenceincr
4763 );
4764
4765 -- IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
4766 create_uit_publication(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
4767 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
4771 ,l_src_pb_id
4768 ,g_source_flag
4769 ,' '
4770 ,cz_pb_mgr.v_server_id
4772 ,l_tgt_pb_id
4773 );
4774 create_uit_publication(cz_pb_mgr.g_ui_templates_new_temp_id_ref(i)
4775 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref(i)
4776 ,g_target_flag
4777 ,cz_pb_mgr.v_db_link
4778 ,cz_pb_mgr.v_server_id
4779 ,l_src_pb_id
4780 ,l_tgt_pb_id
4781 );
4782 -- END IF;
4783 END IF;
4784 END LOOP;
4785 END IF;
4786
4787 COMMIT;
4788 EXCEPTION
4789 WHEN OTHERS
4790 THEN
4791 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4792 cz_pb_mgr.v_err_message := SQLERRM;
4793 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERT_TEMPLATE_ELEMENTS', SQLCODE);
4794 cz_pb_mgr.global_export_retcode := 2;
4795 rollback_data(cz_pb_mgr.v_db_link);
4796 RAISE;
4797 END insert_template_elements;
4798
4799 ------------------------------------------------------------
4800 ----insert into cz_ui_templates
4801 PROCEDURE insert_ui_templates
4802 IS
4803 rec_count NUMBER := 0;
4804 plsql_table_list cz_pb_mgr.col_plsql_table_list;
4805 failed_to_lock_template EXCEPTION;
4806 failed_to_unlock_template EXCEPTION;
4807 l_locked_templates cz_security_pvt.number_type_tbl;
4808 l_templates_to_lock cz_security_pvt.number_type_tbl;
4809 l_return_status VARCHAR2(1);
4810 l_msg_count NUMBER;
4811 l_msg_data VARCHAR2(2000);
4812 l_msg_index NUMBER;
4813 BEGIN
4814 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT = 0) THEN RETURN; END IF;
4815
4816 ----lock content templates to be moved
4817 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
4818 LOOP
4819 l_templates_to_lock(l_templates_to_lock.COUNT + 1) := cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
4820 END LOOP;
4821
4822 cz_security_pvt.lock_template(1.0
4823 ,l_templates_to_lock
4824 ,fnd_api.g_true
4825 ,fnd_api.g_true
4826 ,l_locked_templates
4827 ,l_return_status
4828 ,l_msg_count
4829 ,l_msg_data
4830 );
4831
4832 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
4833 THEN
4834 RAISE failed_to_lock_template;
4835 END IF;
4836
4837 -----resplve templates
4838 --bug 5191745
4839 --before the fix, even for model migration, the ui_def_ids were being populated
4840 --with a value of '1' for CZ_UI_TEMPLATES record.
4841 --The ideal fix would have been to call 'resolve_tmpl_ui_defs' on its own, because
4842 --'resolve_tmpl_ui_defs' already checks for model migration condition
4843 --and assigns the ui_def_id correctly.
4844 --But there is a possibility that it would introduce regression in publishing
4845 --and taking the safer route here.
4846 IF (cz_pb_mgr.v_session_parameter = pub_model)
4847 THEN
4848 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');
4849 ELSE
4850 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');
4851 END IF;
4852 -----resolve button bar templates
4853 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');
4854 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);
4855
4856 ----copy xml doc
4857 -- IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0) THEN
4858 FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
4859 LOOP
4860 IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
4861 THEN
4862 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);
4863 END IF;
4864 END LOOP;
4865 -- END IF;
4866
4867 -- main msg and title intl text records handled in insert_jrad_ui_intl_texts
4868 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');
4869 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');
4870
4871 plsql_table_list.DELETE;
4872 rec_count := 1;
4873 plsql_table_list(rec_count).col_name := 'template_id';
4874 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
4875
4876 rec_count := rec_count + 1;
4880 plsql_table_list(rec_count).col_name := 'title_id';
4877 plsql_table_list(rec_count).col_name := 'main_message_id';
4878 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_msg_id_ref';
4879 rec_count := rec_count + 1;
4881 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_title_ref';
4882 rec_count := rec_count + 1;
4883 plsql_table_list(rec_count).col_name := 'ui_def_id';
4884 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_ui_def_new_ref';
4885 rec_count := rec_count + 1;
4886 plsql_table_list(rec_count).col_name := 'jrad_doc';
4887 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_jrad_new_ref';
4888 rec_count := rec_count + 1;
4889 plsql_table_list(rec_count).col_name := 'button_bar_template_id';
4890 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_button_tbl';
4891 rec_count := rec_count + 1;
4892 plsql_table_list(rec_count).col_name := 'button_bar_templ_uidef_id';
4893 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_but_uidef_id';
4894
4895 insert_into_table('CZ_UI_TEMPLATES'
4896 ,'template_id'
4897 ,'ui_def_id'
4898 ,cz_pb_mgr.v_db_link
4899 ,plsql_table_list
4900 ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
4901 ,'cz_pb_mgr.g_ui_templates_ui_def_old_ref'
4902 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
4903 ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
4904 );
4905 IF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
4906 refresh_global_templates(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
4907 END IF;
4908
4909 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
4910 ----------begin insert into cz_rp_entries----------------
4911 plsql_table_list.DELETE;
4912 rec_count := 1;
4913 plsql_table_list(rec_count).col_name := 'object_id';
4914 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_new_temp_id_ref';
4915 rec_count := rec_count + 1;
4916 plsql_table_list(rec_count).col_name := 'object_type';
4917 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_templates_obj_type';
4918 rec_count := rec_count + 1;
4919 plsql_table_list(rec_count).col_name := 'enclosing_folder';
4920 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
4921 insert_into_rp_entries('cz_rp_entries'
4922 ,'object_id'
4923 ,'object_type'
4924 ,cz_pb_mgr.v_db_link
4925 ,plsql_table_list
4926 ,'cz_pb_mgr.g_ui_templates_old_temp_id_ref'
4927 ,'cz_pb_mgr.g_ui_templates_obj_type'
4928 ,cz_pb_mgr.g_ui_templates_old_temp_id_ref
4929 ,cz_pb_mgr.g_ui_templates_obj_type
4930 );
4931 ----------end insert into cz_rp_entries----------------
4932 END IF;
4933 -- END IF;
4934
4935 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);
4936
4937 IF (l_return_status <> FND_API.G_RET_STS_SUCCESS)
4938 THEN
4939 RAISE failed_to_unlock_template;
4940 END IF;
4941 EXCEPTION
4942 WHEN failed_to_lock_template
4943 THEN
4944 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4945 l_msg_index := 1;
4946
4947 WHILE l_msg_count > 0
4948 LOOP
4949 l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
4950 cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
4951 l_msg_index := l_msg_index + 1;
4952 l_msg_count := l_msg_count - 1;
4953 END LOOP;
4954
4955 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);
4956 raise_application_error('-20020', 'FAILED_TO_LOCK_TEMPLATE');
4957 WHEN failed_to_unlock_template
4958 THEN
4959 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
4960 l_msg_index := 1;
4961
4962 WHILE l_msg_count > 0
4963 LOOP
4964 l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
4965 cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.CZINSERTTEMPLATES', SQLCODE);
4966 l_msg_index := l_msg_index + 1;
4967 l_msg_count := l_msg_count - 1;
4968 END LOOP;
4969
4970 raise_application_error('-20030', 'FAILED_TO_UNLOCK_TEMPLATE');
4971 WHEN OTHERS
4972 THEN
4973 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);
4974 RAISE;
4975 END insert_ui_templates;
4976
4977 --------------------------------------------------------------
4978 ----bulk collect from cz_ui_cont_type_templs
4979 PROCEDURE bulk_collect_cont_type_templs(p_cz_ui_defs_old_oa_ref cz_pb_mgr.t_ref)
4980 IS
4981 l_cnt_typ_tmpls_tmpid_tbl cz_pb_mgr.t_ref;
4985 rec_count NUMBER := 0;
4982 l_cnt_typ_tmpls_uidef_tbl cz_pb_mgr.t_ref;
4983 l_cnt_typ_tmpls_tgtuidef_tbl cz_pb_mgr.t_ref;
4984 l_cnt_typ_tmpls_cont_tbl cz_pb_mgr.t_ref;
4986 BEGIN
4987 IF (p_cz_ui_defs_old_oa_ref.COUNT > 0)
4988 THEN
4989 cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref.DELETE;
4990 cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.DELETE;
4991 cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref.DELETE;
4992
4993 FOR uidef IN p_cz_ui_defs_old_oa_ref.FIRST .. p_cz_ui_defs_old_oa_ref.LAST
4994 LOOP
4995 l_cnt_typ_tmpls_tmpid_tbl.DELETE;
4996 l_cnt_typ_tmpls_uidef_tbl.DELETE;
4997 l_cnt_typ_tmpls_cont_tbl.DELETE;
4998 l_cnt_typ_tmpls_tgtuidef_tbl.DELETE;
4999
5000 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
5001 THEN
5002 SELECT ui_def_id, template_id, template_ui_def_id, content_type
5003 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
5004 FROM cz_ui_cont_type_templs
5005 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;
5006 ELSE
5007 SELECT ui_def_id, template_id, template_ui_def_id, content_type
5008 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
5009 FROM cz_ui_cont_type_templs
5010 WHERE cz_ui_cont_type_templs.ui_def_id = p_cz_ui_defs_old_oa_ref(uidef)
5011 AND cz_ui_cont_type_templs.seeded_flag <> seed_data
5012 AND cz_ui_cont_type_templs.deleted_flag = record_not_deleted
5013 AND cz_ui_cont_type_templs.master_template_flag <> '1';
5014 END IF;
5015
5016 IF (l_cnt_typ_tmpls_uidef_tbl.COUNT > 0)
5017 THEN
5018 rec_count := cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref.COUNT;
5019
5020 FOR uitmp IN l_cnt_typ_tmpls_uidef_tbl.FIRST .. l_cnt_typ_tmpls_uidef_tbl.LAST
5021 LOOP
5022 rec_count := rec_count + 1;
5023 cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref(rec_count) := l_cnt_typ_tmpls_tmpid_tbl(uitmp);
5024 cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5025 -- cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(rec_count) := l_cnt_typ_tmpls_uidef_tbl(uitmp);
5026 cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref(rec_count) := l_cnt_typ_tmpls_tgtuidef_tbl(uitmp);
5027 cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(rec_count) := l_cnt_typ_tmpls_cont_tbl(uitmp);
5028 END LOOP;
5029 END IF;
5030 END LOOP;
5031 END IF;
5032 EXCEPTION
5033 WHEN NO_DATA_FOUND
5034 THEN
5035 NULL;
5036 WHEN OTHERS
5037 THEN
5038 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_cont_templates', 'SQLERRM', SQLERRM);
5039 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UICONTTEMPLATES', SQLCODE);
5040 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5041 RAISE;
5042 END bulk_collect_cont_type_templs;
5043
5044 --------------------------------------------------------------------------
5045 ----bulk collect from cz_ui_cont_type_templs
5046 PROCEDURE bulk_collect_ui_actions(p_old_ui_def_tbl IN cz_pb_mgr.t_ref)
5047 IS
5048 l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
5049 l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
5050 l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
5051 l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
5052 l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
5053 l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
5054 l_prcpg_templ_tbl cz_pb_mgr.t_ref;
5055 l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
5056 l_prc_caption_tbl cz_pb_mgr.t_ref;
5057 l_pg_title_tbl cz_pb_mgr.t_ref;
5058 l_main_msg_tbl cz_pb_mgr.t_ref;
5059 rec_count NUMBER;
5060 BEGIN
5061 IF (p_old_ui_def_tbl.COUNT > 0) THEN
5062 rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
5063
5064 FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5065 LOOP
5066 l_ui_actns_ui_act_id_tbl.DELETE;
5067 l_ui_actns_ui_uidef_tbl.DELETE;
5068 l_ui_actns_ui_tgtui_tbl.DELETE;
5069 l_ui_actns_tgtexpl_tbl.DELETE;
5070 l_ui_actns_ctx_comp_tbl.DELETE;
5071 l_ui_actns_ren_cond_tbl.DELETE;
5072 l_prcpg_templ_tbl.DELETE;
5073 l_prcpg_tmpui_tbl.DELETE;
5074 l_prc_caption_tbl.DELETE;
5075 l_pg_title_tbl.DELETE;
5076 l_main_msg_tbl.DELETE;
5077
5078 SELECT ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
5079 ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
5080 ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
5081 BULK COLLECT INTO l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
5082 ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
5083 ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
5084 FROM cz_ui_actions
5085 WHERE cz_ui_actions.ui_def_id = p_old_ui_def_tbl(uidef)
5086 AND cz_ui_actions.deleted_flag = record_not_deleted
5090 FOR uitmp IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
5087 AND cz_ui_actions.seeded_flag <> seed_data;
5088
5089 IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
5091 LOOP
5092 rec_count := rec_count + 1;
5093 cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5094 cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(uitmp);
5095 cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(uitmp);
5096 cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(uitmp);
5097 cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(uitmp);
5098 cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(uitmp);
5099 cz_pb_mgr.g_ui_actns_ren_cond_tbl(rec_count) := l_ui_actns_ren_cond_tbl(uitmp);
5100 cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(uitmp);
5101 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(uitmp);
5102 cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(uitmp);
5103 cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(uitmp);
5104 cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(uitmp);
5105 END LOOP;
5106 END IF;
5107 END LOOP;
5108 END IF;
5109 EXCEPTION
5110 WHEN NO_DATA_FOUND
5111 THEN
5112 NULL;
5113 WHEN OTHERS
5114 THEN
5115 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
5116 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
5117 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5118 RAISE;
5119 END bulk_collect_ui_actions;
5120
5121 ----------------------------------------------------------
5122 ----bulk collect from cz_ui_cont_type_templs
5123 PROCEDURE bulk_collect_ui_images(p_old_ui_def_tbl cz_pb_mgr.t_ref)
5124 IS
5125 l_ui_images_ui_tbl cz_pb_mgr.t_ref;
5126 l_ui_images_usg_tbl cz_pb_mgr.t_ref;
5127 l_ui_images_enty_tbl cz_pb_mgr.t_ref;
5128 rec_count NUMBER := 0;
5129 BEGIN
5130 IF (p_old_ui_def_tbl.COUNT > 0)
5131 THEN
5132 cz_pb_mgr.v_ui_images_ui_ref.DELETE;
5133 cz_pb_mgr.v_ui_images_ui_tbl.DELETE;
5134 cz_pb_mgr.v_ui_images_usg_tbl.DELETE;
5135 cz_pb_mgr.v_ui_images_enty_tbl.DELETE;
5136
5137 FOR uidef IN p_old_ui_def_tbl.FIRST .. p_old_ui_def_tbl.LAST
5138 LOOP
5139 l_ui_images_ui_tbl.DELETE;
5140
5141 SELECT ui_def_id, image_usage_code, entity_code
5142 BULK COLLECT INTO l_ui_images_ui_tbl, l_ui_images_usg_tbl, l_ui_images_enty_tbl
5143 FROM cz_ui_images
5144 WHERE cz_ui_images.ui_def_id = p_old_ui_def_tbl(uidef)
5145 AND cz_ui_images.deleted_flag = record_not_deleted
5146 AND cz_ui_images.seeded_flag <> seed_data;
5147
5148 IF (l_ui_images_ui_tbl.COUNT > 0)
5149 THEN
5150 rec_count := cz_pb_mgr.v_ui_images_ui_tbl.COUNT;
5151
5152 FOR uitmp IN l_ui_images_ui_tbl.FIRST .. l_ui_images_ui_tbl.LAST
5153 LOOP
5154 rec_count := rec_count + 1;
5155 -- cz_pb_mgr.v_ui_images_ui_ref(rec_count) := l_ui_images_ui_tbl(uitmp);
5156 cz_pb_mgr.v_ui_images_ui_tbl(rec_count) := l_ui_images_ui_tbl(uitmp);
5157 cz_pb_mgr.v_ui_images_usg_tbl(rec_count) := l_ui_images_usg_tbl(uitmp);
5158 cz_pb_mgr.v_ui_images_enty_tbl(rec_count) := l_ui_images_enty_tbl(uitmp);
5159 END LOOP;
5160 END IF;
5161 END LOOP;
5162 END IF;
5163 EXCEPTION
5164 WHEN NO_DATA_FOUND
5165 THEN
5166 NULL;
5167 WHEN OTHERS
5168 THEN
5169 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_images', 'SQLERRM', SQLERRM);
5170 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIIMAGES', SQLCODE);
5171 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5172 RAISE;
5173 END bulk_collect_ui_images;
5174
5175 ----------------------------------------------------------
5176 ----procedure that returns global templates
5177 PROCEDURE get_global_templates(
5178 p_templates_tbl IN cz_pb_mgr.t_ref
5179 ,x_global_templates_tbl OUT NOCOPY cz_pb_mgr.t_ref
5180 ,x_not_global_templ_tbl OUT NOCOPY cz_pb_mgr.t_ref
5181 )
5182 IS
5183 rec_count NUMBER := 0;
5184 l_tmp_id NUMBER := 0;
5185 BEGIN
5186 IF (p_templates_tbl.COUNT > 0)
5187 THEN
5188 FOR tempid IN p_templates_tbl.FIRST .. p_templates_tbl.LAST
5189 LOOP
5190 BEGIN
5191 SELECT 1
5192 INTO l_tmp_id
5193 FROM cz_ui_templates
5194 WHERE cz_ui_templates.ui_def_id IS NULL AND cz_ui_templates.template_id = p_templates_tbl(tempid);
5195 EXCEPTION
5196 WHEN NO_DATA_FOUND
5197 THEN
5198 l_tmp_id := 0;
5199 END;
5200
5201 IF (l_tmp_id = 1)
5202 THEN
5206 rec_count := x_global_templates_tbl.COUNT + 1;
5203 rec_count := x_global_templates_tbl.COUNT + 1;
5204 x_global_templates_tbl(rec_count) := p_templates_tbl(tempid);
5205 ELSE
5207 x_not_global_templ_tbl(rec_count) := p_templates_tbl(tempid);
5208 END IF;
5209 END LOOP;
5210 END IF;
5211 EXCEPTION
5212 WHEN OTHERS
5213 THEN
5214 RAISE;
5215 END get_global_templates;
5216
5217 -----------------------------------------------------------------------------
5218 PROCEDURE copy_jrad_docs
5219 IS
5220 l_new_document VARCHAR2(255);
5221 BEGIN
5222 pbdebug := 22035;
5223
5224 IF (cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref.COUNT > 0)
5225 THEN
5226 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
5227 LOOP
5228 l_new_document :=
5229 REPLACE(cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc)
5230 ,TO_CHAR(cz_pb_mgr.g_pages_ui_def_old_ref(doc))
5231 ,TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_pages_ui_def_old_ref(doc)))
5232 );
5233 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');
5234 cz_pb_mgr.g_cz_ui_pages_jrad_doc_ref(doc) := l_new_document;
5235 END LOOP;
5236 END IF;
5237 EXCEPTION
5238 WHEN OTHERS
5239 THEN
5240 RAISE;
5241 END copy_jrad_docs;
5242
5243 ---------------------------------------------------------------------
5244 PROCEDURE copy_train_docs
5245 IS
5246 l_new_document VARCHAR2(255);
5247 BEGIN
5248 IF (cz_pb_mgr.g_page_sets_jrad_doc_ref.COUNT > 0)
5249 THEN
5250 FOR doc IN cz_pb_mgr.g_page_sets_jrad_doc_ref.FIRST .. cz_pb_mgr.g_page_sets_jrad_doc_ref.LAST
5251 LOOP
5252 l_new_document :=
5253 REPLACE(cz_pb_mgr.g_page_sets_jrad_doc_ref(doc)
5254 ,'ui' || TO_CHAR(cz_pb_mgr.g_page_sets_ui_old_ref(doc))
5255 ,'ui' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_idx_ref(cz_pb_mgr.g_page_sets_ui_old_ref(doc)))
5256 );
5257 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');
5258 cz_pb_mgr.g_page_sets_jrad_doc_ref(doc) := l_new_document;
5259 END LOOP;
5260 END IF;
5261 EXCEPTION
5262 WHEN OTHERS
5263 THEN
5264 RAISE;
5265 END copy_train_docs;
5266
5267 ---------------------------------------------
5268 PROCEDURE insert_ref_templates
5269 IS
5270 l_template_id_tbl cz_pb_mgr.t_ref;
5271 l_ref_template_id_tbl cz_pb_mgr.t_ref;
5272 l_template_ui_tbl cz_pb_mgr.t_ref;
5273 l_ref_templ_ui_tbl cz_pb_mgr.t_ref;
5274 rec_count NUMBER := 0;
5275 plsql_table_list cz_pb_mgr.col_plsql_table_list;
5276 BEGIN
5277 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
5278 THEN
5279 cz_pb_mgr.g_template_id_ref.DELETE;
5280 cz_pb_mgr.g_ref_template_id_ref.DELETE;
5281 cz_pb_mgr.g_template_ui_ref.DELETE;
5282 cz_pb_mgr.g_ref_templ_ui_ref.DELETE;
5283 cz_pb_mgr.g_template_id_old_ref.DELETE;
5284 cz_pb_mgr.g_ref_template_id_old_ref.DELETE;
5285
5286 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
5287 LOOP
5288 l_template_id_tbl.DELETE;
5289 l_ref_template_id_tbl.DELETE;
5290 l_template_ui_tbl.DELETE;
5291 l_ref_templ_ui_tbl.DELETE;
5292
5293 BEGIN
5294 SELECT template_id, ref_template_id, template_ui_def_id, ref_template_ui_def_id
5295 BULK COLLECT INTO l_template_id_tbl, l_ref_template_id_tbl, l_template_ui_tbl, l_ref_templ_ui_tbl
5296 FROM cz_ui_ref_templates
5297 WHERE cz_ui_ref_templates.template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i) AND cz_ui_ref_templates.deleted_flag = '0';
5298 EXCEPTION
5299 WHEN NO_DATA_FOUND
5300 THEN
5301 NULL;
5302 END;
5303
5304 IF (l_template_id_tbl.COUNT > 0)
5305 THEN
5306 rec_count := cz_pb_mgr.g_TEMPLATE_ID_old_ref.COUNT;
5307
5308 FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
5309 LOOP
5310 rec_count := rec_count + 1;
5311 -- cz_pb_mgr.g_template_id_ref(rec_count) := l_template_id_tbl(j);
5312 cz_pb_mgr.g_ref_template_id_ref(rec_count) := l_ref_template_id_tbl(j);
5313 cz_pb_mgr.g_ref_template_id_old_ref(rec_count) := l_ref_template_id_tbl(j);
5314 cz_pb_mgr.g_template_ui_ref(rec_count) := l_template_ui_tbl(j);
5315 cz_pb_mgr.g_ref_templ_ui_ref(rec_count) := l_ref_templ_ui_tbl(j);
5316 cz_pb_mgr.g_template_id_old_ref(rec_count) := l_template_id_tbl(j);
5317 END LOOP;
5318 END IF;
5319 END LOOP;
5320
5321 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');
5325 plsql_table_list.DELETE;
5322 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);
5323 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');
5324 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');
5326 rec_count := 1;
5327 plsql_table_list(rec_count).col_name := 'template_id';
5328 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_ID_ref';
5329 rec_count := rec_count + 1;
5330 plsql_table_list(rec_count).col_name := 'ref_template_id';
5331 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPLATE_ID_ref';
5332 rec_count := rec_count + 1;
5333 plsql_table_list(rec_count).col_name := 'template_ui_def_id';
5334 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_TEMPLATE_UI_ref';
5335 rec_count := rec_count + 1;
5336 plsql_table_list(rec_count).col_name := 'ref_template_ui_def_id';
5337 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_REF_TEMPL_UI_ref';
5338 insert_into_table('CZ_UI_REF_TEMPLATES'
5339 ,'template_id'
5340 ,'ref_template_id'
5341 ,cz_pb_mgr.v_db_link
5342 ,plsql_table_list
5343 ,'cz_pb_mgr.g_TEMPLATE_ID_old_ref'
5344 ,'cz_pb_mgr.g_REF_TEMPLATE_ID_old_ref'
5345 ,cz_pb_mgr.g_template_id_old_ref
5346 ,cz_pb_mgr.g_ref_template_id_old_ref
5347 );
5348 END IF;
5349 EXCEPTION
5350 WHEN OTHERS
5351 THEN
5352 RAISE;
5353 END insert_ref_templates;
5354
5355 ------------------------------------------------------
5356 PROCEDURE export_signatures(p_sig_array IN t_ref)
5357 IS
5358 plsql_table_list cz_pb_mgr.col_plsql_table_list;
5359 l_signature_new_tbl cz_pb_mgr.t_ref;
5360 l_signature_old_tbl cz_pb_mgr.t_ref;
5361 l_arg_sig_tbl cz_pb_mgr.t_ref;
5362 l_data_sig_tbl cz_pb_mgr.t_ref;
5363 l_sig_count NUMBER := 0;
5364 rec_count NUMBER := 0;
5365 l_arg_ind_tbl cz_pb_mgr.t_ref;
5366 BEGIN
5367 IF (p_sig_array.COUNT > 0)
5368 THEN
5369 cz_pb_mgr.v_sig_new_ref.DELETE;
5370 cz_pb_mgr.v_sig_old_ref.DELETE;
5371 cz_pb_mgr.v_sig_idx_ref.DELETE;
5372 cz_pb_mgr.v_arg_sig_old_tbl.DELETE;
5373 cz_pb_mgr.v_arg_sig_tbl.DELETE;
5374 cz_pb_mgr.v_data_sig_tbl.DELETE;
5375
5376 FOR sigid IN p_sig_array.FIRST .. p_sig_array.LAST
5377 LOOP
5378 l_signature_old_tbl.DELETE;
5379 l_signature_new_tbl.DELETE;
5380
5381 BEGIN
5382 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_signatures_seq
5383 , 'cz_signatures_s.nextval' || cz_pb_mgr.v_db_link
5384 ,cz_pb_mgr.v_oraclesequenceincr
5385 )
5386 ,signature_id
5387 BULK COLLECT INTO l_signature_new_tbl
5388 ,l_signature_old_tbl
5389 FROM cz_signatures
5390 WHERE cz_signatures.signature_id = p_sig_array(sigid)
5391 AND cz_signatures.deleted_flag = record_not_deleted
5392 AND cz_signatures.seeded_flag <> seed_data;
5393 EXCEPTION
5394 WHEN NO_DATA_FOUND
5395 THEN
5396 NULL;
5397 END;
5398
5399 IF (l_signature_old_tbl.COUNT > 0)
5400 THEN
5401 FOR i IN l_signature_old_tbl.FIRST .. l_signature_old_tbl.LAST
5402 LOOP
5403 IF (NOT cz_pb_mgr.v_sig_idx_ref.EXISTS(l_signature_old_tbl(i)))
5404 THEN
5405 l_sig_count := cz_pb_mgr.v_sig_new_ref.COUNT + 1;
5406 cz_pb_mgr.v_sig_new_ref(l_sig_count) := l_signature_new_tbl(i);
5407 cz_pb_mgr.v_sig_old_ref(l_sig_count) := l_signature_old_tbl(i);
5408 cz_pb_mgr.v_sig_idx_ref(l_signature_old_tbl(i)):=l_signature_new_tbl(i);
5409 END IF;
5410 END LOOP;
5411 END IF;
5412 END LOOP;
5413
5414 plsql_table_list.DELETE;
5415 rec_count := 1;
5416 plsql_table_list(rec_count).col_name := 'signature_id';
5417 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_sig_new_ref';
5418 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);
5419 END IF;
5420
5421 IF (cz_pb_mgr.v_sig_old_ref.COUNT > 0)
5422 THEN
5423 FOR j IN cz_pb_mgr.v_sig_old_ref.FIRST .. cz_pb_mgr.v_sig_old_ref.LAST
5424 LOOP
5425 SELECT argument_signature_id, datatype_signature_id, argument_index
5426 BULK COLLECT INTO l_arg_sig_tbl, l_data_sig_tbl, l_arg_ind_tbl
5427 FROM cz_signature_arguments
5428 WHERE cz_signature_arguments.argument_signature_id = cz_pb_mgr.v_sig_old_ref(j)
5429 AND cz_signature_arguments.deleted_flag = record_not_deleted
5430 AND cz_signature_arguments.seeded_flag <> seed_data;
5431
5435 LOOP
5432 IF (l_arg_sig_tbl.COUNT > 0)
5433 THEN
5434 FOR k IN l_arg_sig_tbl.FIRST .. l_arg_sig_tbl.LAST
5436 l_sig_count := cz_pb_mgr.v_arg_sig_old_tbl.COUNT + 1;
5437 cz_pb_mgr.v_arg_sig_old_tbl(l_sig_count) := l_arg_sig_tbl(k);
5438 -- cz_pb_mgr.v_arg_sig_tbl(l_sig_count) := l_arg_sig_tbl(k);
5439 cz_pb_mgr.v_data_sig_tbl(l_sig_count) := l_data_sig_tbl(k);
5440 cz_pb_mgr.v_arg_ind_old_tbl(l_sig_count) := l_arg_ind_tbl(k);
5441 END LOOP;
5442 END IF;
5443 END LOOP;
5444
5445 ----resolve ids
5446 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');
5447 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);
5448 plsql_table_list.DELETE;
5449 rec_count := 1;
5450 plsql_table_list(rec_count).col_name := 'argument_signature_id';
5451 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_sig_tbl';
5452 rec_count := rec_count + 1;
5453 plsql_table_list(rec_count).col_name := 'datatype_signature_id';
5454 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_data_sig_tbl';
5455 rec_count := rec_count + 1;
5456 plsql_table_list(rec_count).col_name := 'argument_index';
5457 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_arg_ind_old_tbl';
5458 insert_into_table('cz_signature_arguments'
5459 ,'argument_signature_id'
5460 ,'argument_index'
5461 ,cz_pb_mgr.v_db_link
5462 ,plsql_table_list
5463 ,'cz_pb_mgr.v_arg_sig_old_tbl'
5464 ,'cz_pb_mgr.v_arg_ind_old_tbl'
5465 ,cz_pb_mgr.v_arg_sig_old_tbl
5466 ,cz_pb_mgr.v_arg_ind_old_tbl
5467 );
5468 l_signature_new_tbl.DELETE;
5469 l_signature_old_tbl.DELETE;
5470 l_arg_sig_tbl.DELETE;
5471 l_data_sig_tbl.DELETE;
5472 END IF;
5473 EXCEPTION
5474 WHEN OTHERS
5475 THEN
5476 cz_pb_mgr.v_err_message := 'Insert into signature sets for: ' || SQLERRM;
5477 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SIGNATURESETS', SQLCODE);
5478 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5479 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
5480 RAISE;
5481 END export_signatures;
5482
5483 -------------------------------------------------------------------------------
5484 PROCEDURE insert_jrad_ui_intl_texts
5485 IS
5486 l_intl_text_id_tbl cz_pb_mgr.t_ref;
5487 rec_count NUMBER := 0;
5488 BEGIN
5489 cz_pb_mgr.g_intl_text_id_ref.DELETE;
5490
5491 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
5492 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
5493 LOOP
5494 l_intl_text_id_tbl.DELETE;
5495
5496 BEGIN
5497 SELECT intl_text_id
5498 BULK COLLECT INTO l_intl_text_id_tbl
5499 FROM cz_intl_texts txt, cz_ui_defs ui
5500 WHERE txt.model_id = cz_pb_mgr.v_models_to_be_exported(i)
5501 AND txt.deleted_flag = '0'
5502 AND NVL(txt.seeded_flag, '0') = '0'
5503 AND NVL(txt.ui_def_id, -1) = ui.ui_def_id
5504 AND txt.model_id = ui.devl_project_id
5505 AND ui.deleted_flag = '0' AND ui_style = g_ui_style_jrad;
5506 EXCEPTION
5507 WHEN NO_DATA_FOUND THEN
5508 NULL;
5509 END;
5510
5511 IF (l_intl_text_id_tbl.COUNT > 0) THEN
5512 FOR j IN l_intl_text_id_tbl.FIRST .. l_intl_text_id_tbl.LAST
5513 LOOP
5514 rec_count := rec_count + 1;
5515 cz_pb_mgr.g_intl_text_id_ref(rec_count) := l_intl_text_id_tbl(j);
5516 END LOOP;
5517 END IF;
5518 END LOOP;
5519
5520 IF (rec_count > 0) THEN
5521 insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'caption texts of JRAD UI');
5522 END IF;
5523 END IF;
5524
5525 -- main msg and title ids collected in get_oa_tmpls
5526 IF cz_pb_mgr.g_ui_templates_msg_id_ref.COUNT > 0 THEN
5527 rec_count := 0;
5528 CZ_PB_MGR.g_intl_text_id_ref.DELETE;
5529
5530 FOR i IN cz_pb_mgr.g_ui_templates_msg_id_ref.FIRST .. cz_pb_mgr.g_ui_templates_msg_id_ref.LAST LOOP
5531 IF cz_pb_mgr.g_ui_templates_msg_id_ref(i) IS NOT NULL THEN
5532 rec_count := rec_count + 1;
5533 cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_msg_id_ref(i);
5534 END IF;
5535 IF cz_pb_mgr.g_ui_templates_title_ref(i) IS NOT NULL THEN
5536 rec_count := rec_count + 1;
5537 cz_pb_mgr.g_intl_text_id_ref(rec_count) := cz_pb_mgr.g_ui_templates_title_ref(i);
5538 END IF;
5539 END LOOP;
5540
5541 IF (rec_count > 0) THEN
5542 insert_intl_texts(CZ_PB_MGR.g_intl_text_id_ref, 'template msg and title texts', TRUE);
5543 END IF;
5544 END IF;
5545
5546 EXCEPTION
5547 WHEN OTHERS THEN
5551 RAISE;
5548 cz_pb_mgr.v_err_message := 'Bulk Collect of intl texts of JRAD UI: ' || SQLERRM;
5549 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'INSERTJRADUIINTLTEXTS', SQLCODE);
5550 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5552 END insert_jrad_ui_intl_texts;
5553
5554 -------------------------------------------------------------------------------
5555 ------copying OA style UI(s)
5556 PROCEDURE export_oa_uis
5557 IS
5558 rec_count NUMBER := 0;
5559 row_count NUMBER := 0;
5560 plsql_table_list cz_pb_mgr.col_plsql_table_list;
5561 l_new_document VARCHAR2(255);
5562 BEGIN
5563 ----insert intl texts of JRAD UI(s)
5564 insert_jrad_ui_intl_texts;
5565 ----insert into cz_ui_templates
5566 insert_ui_templates;
5567 -----insert ref templates
5568 insert_ref_templates;
5569 ----collect ui pages
5570 bulk_collect_ui_pages;
5571 ----copy jrad docs
5572 copy_jrad_docs;
5573 ------insert into ui pages
5574 insert_into_ui_pages;
5575 ----collect page sets
5576 bulk_collect_page_sets;
5577 copy_train_docs;
5578 insert_into_ui_page_sets;
5579 -----bulk collect from page refs
5580 bulk_collect_page_refs;
5581 ----insert into cz_ui_page_refs
5582 insert_into_ui_page_refs;
5583 -----bulk collect from ui refs
5584 bulk_collect_ui_refs;
5585 ----insert into cz_ui_refs
5586 insert_into_ui_refs;
5587 -----bulk collect from ui ps maps
5588 bulk_collect_ui_ps_maps;
5589 ----insert into cz_ui_page_elements
5590 export_signatures(cz_pb_mgr.g_ui_ps_maps_elem_sig_tbl);
5591 insert_ui_ps_maps;
5592
5593 -- A master template carries its own set of content templates
5594 -- need to resolved everything and insert separately for master templates
5595 -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
5596 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
5597 THEN
5598 --collect content templates
5599 bulk_collect_cont_type_templs(cz_pb_mgr.v_mt_old_id_tbl);
5600 --resolve template ids
5601 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);
5602 --resolve ui def ids
5603 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');
5604 plsql_table_list.DELETE;
5605 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_cnt_typ_tmpls_new_uidef_ref';
5608 rec_count := rec_count + 1;
5609 plsql_table_list(rec_count).col_name := 'template_id';
5610 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
5611 rec_count := rec_count + 1;
5612 plsql_table_list(rec_count).col_name := 'template_ui_def_id';
5613 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
5614 rec_count := rec_count + 1;
5615 plsql_table_list(rec_count).col_name := 'content_type';
5616 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
5617 insert_into_table('cz_ui_cont_type_templs'
5618 ,'content_type'
5619 ,'ui_def_id'
5620 ,cz_pb_mgr.v_db_link
5621 ,plsql_table_list
5622 ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
5623 ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
5624 ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
5625 ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
5626 );
5627 row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
5628 IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT >0) THEN
5629 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
5630 LOOP
5631 row_count:=row_count+1;
5632 cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
5633 cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
5634 END LOOP;
5635 END IF;
5636 END IF;
5637
5638 ----resolve ui_def_id
5639 bulk_collect_cont_type_templs(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
5640
5641 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');
5642
5643 ----resolve tmp ui_def_id, template id
5644 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
5645 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');
5646 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);
5647 END IF;
5648
5649 plsql_table_list.DELETE;
5650 rec_count := 1;
5651 plsql_table_list(rec_count).col_name := 'ui_def_id';
5652 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref';
5653 rec_count := rec_count + 1;
5654 plsql_table_list(rec_count).col_name := 'template_id';
5658 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tgtuidef_ref';
5655 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_tmpid_ref';
5656 rec_count := rec_count + 1;
5657 plsql_table_list(rec_count).col_name := 'template_ui_def_id';
5659 rec_count := rec_count + 1;
5660 plsql_table_list(rec_count).col_name := 'content_type';
5661 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref';
5662 insert_into_table('cz_ui_cont_type_templs'
5663 ,'content_type'
5664 ,'ui_def_id'
5665 ,cz_pb_mgr.v_db_link
5666 ,plsql_table_list
5667 ,'cz_pb_mgr.g_cnt_typ_tmpls_cont_ref'
5668 ,'cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref'
5669 ,cz_pb_mgr.g_cnt_typ_tmpls_cont_ref
5670 ,cz_pb_mgr.g_cnt_typ_tmpls_old_uidef_ref
5671 );
5672 row_count:=cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref.COUNT;
5673 IF (g_cnt_typ_tmpls_new_uidef_ref.COUNT > 0) THEN
5674 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
5675 LOOP
5676 row_count:=row_count+1;
5677 cz_pb_mgr.l_cnt_typ_tmpls_cont_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_cont_ref(i);
5678 cz_pb_mgr.l_cnt_typ_tmpls_new_uidef_ref(row_count):=cz_pb_mgr.g_cnt_typ_tmpls_new_uidef_ref(i);
5679 END LOOP;
5680 END IF;
5681
5682 ----bulk collect ui actions
5683 bulk_collect_ui_actions(cz_pb_mgr.v_cz_ui_defs_old_oa_ref);
5684
5685 -- Note g_ui_actns_ui_act_id_ref contains both local ui actions (bulk_collect_ui_actions)
5686 -- and global ones (collect_global_actions). The 'new' ids in this array are the same old
5687 -- ids as the ones in g_ui_actns_ui_act_id_old_ref. They are real new ids only when the
5688 -- session is remote migration and the actions are globals.
5689
5690 ----resolve ui_def_id
5691 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');
5692 -- ignore expl id resolution failure because of a ui refresh issue (see 6817586)
5693 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);
5694 -- context_component_id, obsolete
5695 -- 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');
5696 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');
5697
5698 IF cz_pb_mgr.v_session_parameter = pub_model OR cz_pb_mgr.v_server_id <> 0 THEN
5699 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');
5700 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);
5701 END IF;
5702
5703 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');
5704 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');
5705 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');
5706
5707 plsql_table_list.DELETE;
5708 rec_count := 1;
5709 plsql_table_list(rec_count).col_name := 'ui_def_id';
5710 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_uidef_ref';
5711 rec_count := rec_count + 1;
5712 plsql_table_list(rec_count).col_name := 'ui_action_id';
5713 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_act_id_ref';
5714 rec_count := rec_count + 1;
5715 plsql_table_list(rec_count).col_name := 'target_ui_def_id';
5716 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ui_tgtui_ref';
5717 rec_count := rec_count + 1;
5718 plsql_table_list(rec_count).col_name := 'target_expl_node_id';
5719 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_tgtexpl_ref';
5720 rec_count := rec_count + 1;
5721 plsql_table_list(rec_count).col_name := 'context_component_id';
5722 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ctx_comp_tbl';
5723 rec_count := rec_count + 1;
5724 plsql_table_list(rec_count).col_name := 'render_condition_id';
5725 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ui_actns_ren_cond_tbl';
5726 rec_count := rec_count + 1;
5727 plsql_table_list(rec_count).col_name := 'processing_page_templ_id';
5728 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_templ_tbl';
5729 rec_count := rec_count + 1;
5730 plsql_table_list(rec_count).col_name := 'proc_page_templ_ui_def_id';
5731 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prcpg_tmpui_tbl';
5732 rec_count := rec_count + 1;
5733 plsql_table_list(rec_count).col_name := 'processing_caption_text_id';
5734 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_prc_caption_tbl';
5735 rec_count := rec_count + 1;
5736 plsql_table_list(rec_count).col_name := 'page_title_text_id';
5737 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_pg_title_tbl';
5738 rec_count := rec_count + 1;
5739 plsql_table_list(rec_count).col_name := 'main_message_text_id';
5740 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_uiact_main_msg_tbl';
5741 -- should call resolve_ids instead
5742 resolve_ref_ids_not_found(cz_pb_mgr.g_ui_actns_ui_uidef_ref
5746 ,'cz_ui_actions.target_ui_def_id'
5743 ,cz_pb_mgr.v_cz_ui_defs_old_ref
5744 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
5745 ,cz_pb_mgr.g_ui_actns_ui_tgtui_ref
5747 ,cz_pb_mgr.v_status_code
5748 );
5749 insert_into_table('cz_ui_actions'
5750 ,'ui_action_id'
5751 ,'ui_def_id'
5752 ,cz_pb_mgr.v_db_link
5753 ,plsql_table_list
5754 ,'cz_pb_mgr.g_ui_actns_ui_act_id_old_ref'
5755 ,'cz_pb_mgr.g_ui_actns_ui_uidef_old_ref'
5756 ,cz_pb_mgr.g_ui_actns_ui_act_id_old_ref
5757 ,cz_pb_mgr.g_ui_actns_ui_uidef_old_ref
5758 );
5759
5760 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
5761 THEN
5762 refresh_ui_actions(cz_pb_mgr.g_ui_actns_ui_uidef_old_ref);
5763 END IF;
5764
5765 ------bulk collect ui images for Master templates
5766 -- for local migration, cz_pb_mgr.v_new_mt_id_tbl should be empty
5767 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
5768 THEN
5769 bulk_collect_ui_images(cz_pb_mgr.v_mt_old_id_tbl);
5770 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');
5771 plsql_table_list.DELETE;
5772 rec_count := 1;
5773 plsql_table_list(rec_count).col_name := 'ui_def_id';
5774 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
5775 rec_count := rec_count + 1;
5776 plsql_table_list(rec_count).col_name := 'image_usage_code';
5777 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
5778 rec_count := rec_count + 1;
5779 plsql_table_list(rec_count).col_name := 'entity_code';
5780 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
5781 insert_into_table('cz_ui_images'
5782 ,'ui_def_id'
5783 ,'image_usage_code'
5784 ,'entity_code'
5785 ,cz_pb_mgr.v_db_link
5786 ,plsql_table_list
5787 ,'cz_pb_mgr.v_ui_images_ui_tbl'
5788 ,'cz_pb_mgr.v_ui_images_usg_tbl'
5789 ,'cz_pb_mgr.v_ui_images_enty_tbl'
5790 ,cz_pb_mgr.v_ui_images_ui_tbl
5791 ,cz_pb_mgr.v_ui_images_usg_tbl
5792 ,cz_pb_mgr.v_ui_images_enty_tbl
5793 );
5794 row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
5795 IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT >0)THEN
5796 FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
5797 LOOP
5798 row_count:=row_count+1;
5799 cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
5800 cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
5801 cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
5802 END LOOP;
5803 END IF;
5804 END IF;
5805
5806 ----resolve ui_def_id
5807 bulk_collect_ui_images(cz_pb_mgr.v_cz_ui_defs_old_ref);
5808 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');
5809 -----insert into ui images
5810 plsql_table_list.DELETE;
5811 rec_count := 1;
5812 plsql_table_list(rec_count).col_name := 'ui_def_id';
5813 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_ui_ref';
5814 rec_count := rec_count + 1;
5815 plsql_table_list(rec_count).col_name := 'image_usage_code';
5816 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_usg_tbl';
5817 rec_count := rec_count + 1;
5818 plsql_table_list(rec_count).col_name := 'entity_code';
5819 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_images_enty_tbl';
5820 insert_into_table('cz_ui_images'
5821 ,'ui_def_id'
5822 ,'image_usage_code'
5823 ,'entity_code'
5824 ,cz_pb_mgr.v_db_link
5825 ,plsql_table_list
5826 ,'cz_pb_mgr.v_ui_images_ui_tbl'
5827 ,'cz_pb_mgr.v_ui_images_usg_tbl'
5828 ,'cz_pb_mgr.v_ui_images_enty_tbl'
5829 ,cz_pb_mgr.v_ui_images_ui_tbl
5830 ,cz_pb_mgr.v_ui_images_usg_tbl
5831 ,cz_pb_mgr.v_ui_images_enty_tbl
5832 );
5833 row_count:=cz_pb_mgr.l_ui_images_ui_ref.COUNT;
5834 IF (cz_pb_mgr.v_ui_images_ui_ref.COUNT > 0) THEN
5835 FOR i in cz_pb_mgr.v_ui_images_ui_ref.FIRST .. cz_pb_mgr.v_ui_images_ui_ref.LAST
5836 LOOP
5837 row_count:=row_count+1;
5838 cz_pb_mgr.l_ui_images_ui_ref(row_count):=cz_pb_mgr.v_ui_images_ui_ref(i);
5839 cz_pb_mgr.l_ui_images_enty_tbl(row_count):=cz_pb_mgr.v_ui_images_enty_tbl(i);
5840 cz_pb_mgr.l_ui_images_usg_tbl(row_count):=cz_pb_mgr.v_ui_images_usg_tbl(i);
5841 END LOOP;
5842 END IF;
5843
5844 COMMIT;
5845 EXCEPTION
5846 WHEN OTHERS
5847 THEN
5848 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_OA_UI_ERR', 'SQLERRM', SQLERRM);
5852 END export_oa_uis;
5849 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_EXPORTOAUI', SQLCODE);
5850 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
5851 RAISE;
5853
5854 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5855 ------makes a copy of a UI and its children
5856 PROCEDURE export_single_oa_ui(
5857 p_ui_def_id IN NUMBER
5858 ,x_ui_def_id OUT NOCOPY NUMBER
5859 ,x_return_status OUT NOCOPY VARCHAR2
5860 ,x_msg_count OUT NOCOPY NUMBER
5861 ,x_msg_data OUT NOCOPY VARCHAR2
5862 )
5863 IS
5864 ui_def_id_is_null EXCEPTION;
5865 ui_def_id_not_found EXCEPTION;
5866 not_oa_style_ui EXCEPTION;
5867 l_ui_def_id NUMBER;
5868 l_ui_style VARCHAR2(3);
5869 l_child_ui_tbl cz_pb_mgr.t_ref;
5870 rec_count NUMBER := 0;
5871 plsql_table_list cz_pb_mgr.col_plsql_table_list;
5872 BEGIN
5873 x_return_status := FND_API.G_RET_STS_SUCCESS;
5874 cz_pb_mgr.v_status_code := 'OK';
5875
5876 IF (p_ui_def_id IS NULL)
5877 THEN
5878 RAISE ui_def_id_is_null;
5879 END IF;
5880
5881 BEGIN
5882 SELECT ui_def_id, ui_style
5883 INTO l_ui_def_id, l_ui_style
5884 FROM cz_ui_defs
5885 WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
5886 EXCEPTION
5887 WHEN NO_DATA_FOUND
5888 THEN
5889 RAISE ui_def_id_not_found;
5890 END;
5891
5892 IF (l_ui_style <> oa_ui_style)
5893 THEN
5894 RAISE not_oa_style_ui;
5895 END IF;
5896
5897 cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
5898 cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
5899 cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
5900 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
5901 rec_count := cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT + 1;
5902 cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_ui_def_id;
5903 cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_ui_def_id;
5904 l_child_ui_tbl.DELETE;
5905
5906 BEGIN
5907 SELECT ref_ui_def_id
5908 BULK COLLECT INTO l_child_ui_tbl
5909 FROM cz_ui_refs
5910 WHERE cz_ui_refs.ui_def_id = l_ui_def_id AND cz_ui_refs.deleted_flag = record_not_deleted;
5911 EXCEPTION
5912 WHEN NO_DATA_FOUND
5913 THEN
5914 NULL; ---if no children then ignore
5915 END;
5916
5917 IF (l_child_ui_tbl.COUNT > 0)
5918 THEN
5919 rec_count := cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT + 1;
5920
5921 FOR i IN l_child_ui_tbl.FIRST .. l_child_ui_tbl.LAST
5922 LOOP
5923 rec_count := rec_count + 1;
5924 cz_pb_mgr.v_cz_ui_defs_old_ref(rec_count) := l_child_ui_tbl(i);
5925 cz_pb_mgr.v_cz_ui_defs_old_oa_ref(rec_count) := l_child_ui_tbl(i);
5926 END LOOP;
5927 END IF;
5928
5929 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0)
5930 THEN
5931 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
5932 rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
5933 IF (v_cz_ui_defs_old_ref.COUNT > 0) THEN
5934 FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
5935 LOOP
5936 rec_count := rec_count + 1;
5937 cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
5938 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);
5939
5940 IF (cz_pb_mgr.v_cz_ui_defs_old_ref(k) = p_ui_def_id)
5941 THEN
5942 x_ui_def_id := cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count);
5943 END IF;
5944
5945 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);
5946 END LOOP;
5947 END IF;
5948
5949 --------populate plsql_table_list for ui_defs
5950 plsql_table_list.DELETE;
5951 rec_count := 1;
5952 plsql_table_list(rec_count).col_name := 'ui_def_id';
5953 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
5954 insert_into_table('cz_ui_defs'
5955 ,'ui_def_id'
5956 ,cz_pb_mgr.v_db_link
5957 ,plsql_table_list
5958 ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
5959 ,cz_pb_mgr.v_cz_ui_defs_old_ref
5960 );
5961 ------export oa uis
5962 export_oa_uis;
5963 cz_pb_mgr.v_cz_ui_defs_old_oa_ref.DELETE;
5964 cz_pb_mgr.v_cz_ui_defs_old_ref.DELETE;
5965 cz_pb_mgr.v_cz_ui_defs_idx_ref.DELETE;
5966 cz_pb_mgr.v_cz_ui_defs_new_ref.DELETE;
5967 END IF;
5968 EXCEPTION
5969 WHEN ui_def_id_is_null
5970 THEN
5971 x_return_status := FND_API.G_RET_STS_ERROR;
5972 x_msg_data := cz_utils.get_text('UI_DEF_ID_IS_NULL');
5973 x_msg_count := 1;
5974 WHEN ui_def_id_not_found
5975 THEN
5976 x_return_status := FND_API.G_RET_STS_ERROR;
5977 x_msg_data := cz_utils.get_text('UI_DEF_ID_NOT_FOUND', 'UIDEFID', p_ui_def_id);
5978 x_msg_count := 1;
5979 WHEN not_oa_style_ui
5980 THEN
5981 x_return_status := FND_API.G_RET_STS_ERROR;
5985 THEN
5982 x_msg_data := cz_utils.get_text('NOT_OA_STYLE_UI', 'UIDEFID', p_ui_def_id);
5983 x_msg_count := 1;
5984 WHEN OTHERS
5986 x_return_status := FND_API.G_RET_STS_ERROR;
5987 x_msg_data := cz_utils.get_text('FATAL_ERROR', 'UIDEFID', p_ui_def_id, 'ERROR', SQLERRM);
5988 x_msg_count := 1;
5989 END export_single_oa_ui;
5990
5991 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
5992 PROCEDURE log_report(p_pkg_name VARCHAR2, p_routine VARCHAR2, p_ndebug NUMBER, p_msg VARCHAR2, p_log_level NUMBER)
5993 IS
5994 PRAGMA AUTONOMOUS_TRANSACTION;
5995 l_module_name VARCHAR2(2000);
5996 BEGIN
5997 IF (p_log_level >= fnd_log.g_current_runtime_level)
5998 THEN
5999 l_module_name := 'cz.plsql.' || p_pkg_name || '.' || p_routine || '.' || p_ndebug;
6000 fnd_log.STRING(p_log_level, l_module_name, p_msg);
6001 COMMIT;
6002 END IF;
6003 EXCEPTION
6004 WHEN OTHERS
6005 THEN
6006 ROLLBACK;
6007 END log_report;
6008
6009 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6010 --------------------procedure to log errors during the publication process
6011 PROCEDURE log_pb_errors(p_message IN VARCHAR2, p_urgency IN VARCHAR2, p_caller IN VARCHAR2, p_statuscode IN PLS_INTEGER)
6012 AS
6013 v_message VARCHAR2(2000) := NULL;
6014 BEGIN
6015 IF (p_message IS NOT NULL)
6016 THEN
6017 v_message := LTRIM(RTRIM(SUBSTR(p_message, 1, 2000)));
6018 ELSE
6019 v_message := 'Check SQLCODE in statuscode field. ';
6020 END IF;
6021
6022 IF fnd_global.conc_request_id > 0
6023 THEN
6024 fnd_file.put_line(fnd_file.LOG, v_message);
6025 END IF;
6026
6027 INSERT INTO cz_db_logs
6028 (logtime, loguser, urgency, caller, statuscode, MESSAGE, message_id, run_id
6029 )
6030 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
6031 );
6032
6033 COMMIT;
6034 EXCEPTION
6035 WHEN OTHERS
6036 THEN
6037 cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
6038 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
6039 END log_pb_errors;
6040
6041 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6042 ------procedure that logs timing message
6043 PROCEDURE log_timing_message(p_msg IN VARCHAR2)
6044 IS
6045 BEGIN
6046 log_pb_errors(p_msg, 2, 'cz_pb_mgr_TIMING', 55);
6047 END;
6048
6049 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6050 PROCEDURE log_pb_trace
6051 AS
6052 l_msg VARCHAR2(2000);
6053 BEGIN
6054 -----------log trace
6055 IF ((cz_pb_mgr.v_root_model_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
6056 THEN
6057 cz_pb_mgr.v_err_message := 'Parent model in publication (migration) request : ' || TO_CHAR(cz_pb_mgr.v_root_model_id);
6058 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
6059 cz_pb_mgr.v_err_message :=
6060 'Source publication : ' || cz_pb_mgr.v_cz_model_pub_old_id || ' target publication: ' || cz_pb_mgr.v_cz_model_pub_new_id;
6061 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.TRACE', SQLCODE);
6062 END IF;
6063
6064 IF (cz_pb_mgr.v_msg_tbl.COUNT > 0)
6065 THEN
6066 FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
6067 LOOP
6068 IF fnd_global.conc_request_id > 0
6069 THEN
6070 fnd_file.put_line(fnd_file.LOG, cz_pb_mgr.v_msg_tbl(i).msg_text);
6071 END IF;
6072
6073 BEGIN
6074 INSERT INTO cz_db_logs
6075 (logtime, caller, statuscode, MESSAGE
6076 ,message_id, creation_date, run_id
6077 )
6078 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
6079 ,cz_pb_mgr.v_publication_id, SYSDATE, cz_pb_mgr.v_pb_run_id
6080 );
6081 EXCEPTION
6082 WHEN OTHERS
6083 THEN
6084 RAISE;
6085 END;
6086
6087 log_report('cz_pb_mgr'
6088 ,cz_pb_mgr.v_msg_tbl(i).called_proc
6089 ,cz_pb_mgr.v_msg_tbl(i).sql_code
6090 ,cz_pb_mgr.v_msg_tbl(i).msg_text
6091 ,fnd_log.level_error
6092 );
6093 END LOOP;
6094
6095 COMMIT;
6096 END IF;
6097
6098 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))
6099 THEN
6100 fnd_msg_pub.initialize;
6101
6102 FOR i IN cz_pb_mgr.v_msg_tbl.FIRST .. cz_pb_mgr.v_msg_tbl.LAST
6103 LOOP
6104 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%'))
6105 THEN
6106 fnd_message.set_name('CZ', 'CZ_MODEL_COPY_ERR');
6107 fnd_message.set_token('ERRORMSG', cz_pb_mgr.v_msg_tbl(i).msg_text);
6108 fnd_msg_pub.ADD;
6109 END IF;
6110 END LOOP;
6111 END IF;
6112
6116 THEN
6113 cz_pb_mgr.v_msg_tbl.DELETE;
6114 EXCEPTION
6115 WHEN OTHERS
6117 cz_pb_mgr.v_err_message := 'Error in inserting into cz_db_logs: ' || SQLERRM;
6118 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SESSN', SQLCODE);
6119 cz_pb_mgr.v_msg_tbl.DELETE;
6120 END log_pb_trace;
6121
6122 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6123 ----update pup status
6124 PROCEDURE update_pup_status(p_publication_id cz_model_publications.publication_id%TYPE)
6125 IS
6126 l_remote_publication_id NUMBER;
6127 BEGIN
6128 UPDATE cz_model_publications
6129 SET export_status = 'OK'
6130 WHERE remote_publication_id = (SELECT remote_publication_id
6131 FROM cz_model_publications
6132 WHERE deleted_flag = '0' AND publication_id = p_publication_id AND export_status = 'ERR')
6133 AND export_status = 'PUP'
6134 AND deleted_flag = '0';
6135 END;
6136
6137 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6138 ------updates export status in cZ_model_publications
6139 PROCEDURE update_publication_status(p_publication_id IN NUMBER, p_pb_status IN VARCHAR2, p_db_link IN VARCHAR2)
6140 IS
6141 BEGIN
6142 IF ((p_publication_id > 0) AND(p_pb_status IS NOT NULL))
6143 THEN
6144 cz_pb_mgr.v_insert_string :=
6145 'UPDATE cz_model_publications'
6146 || p_db_link
6147 || ' '
6148 || 'SET export_status = :1,'
6149 || ' '
6150 || 'published = sysdate'
6151 || ' '
6152 || 'WHERE cz_model_publications.publication_id = :2';
6153
6154 EXECUTE IMMEDIATE cz_pb_mgr.v_insert_string
6155 USING p_pb_status, p_publication_id;
6156 END IF;
6157 EXCEPTION
6158 WHEN OTHERS
6159 THEN
6160 cz_pb_mgr.v_err_message := 'ERROR : updation of publication status ' || SQLERRM;
6161 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPPBSTATUS', SQLCODE);
6162 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6163 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6164 RAISE;
6165 END update_publication_status;
6166
6167 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6168 ------------ to retrieve the db link
6169 FUNCTION retrieve_db_link(p_server_id PLS_INTEGER)
6170 RETURN VARCHAR2
6171 IS
6172 v_source_id cz_servers.server_local_id%TYPE;
6173 v_source_instance cz_servers.instance_name%TYPE;
6174 v_source_host cz_servers.hostname%TYPE;
6175 v_source_port cz_servers.db_listener_port%TYPE;
6176 v_source_owner cz_servers.cz_owner%TYPE;
6177 v_target_id cz_servers.server_local_id%TYPE;
6178 v_target_instance cz_servers.instance_name%TYPE;
6179 v_target_host cz_servers.hostname%TYPE;
6180 v_target_port cz_servers.db_listener_port%TYPE;
6181 v_target_owner cz_servers.cz_owner%TYPE;
6182 v_db_link cz_servers.cz_link_name%TYPE;
6183
6184 CURSOR db_compare_cur(p_server_id PLS_INTEGER)
6185 IS
6186 SELECT server_local_id, instance_name, hostname, db_listener_port, cz_owner, fndnam_link_name
6187 FROM cz_servers
6188 WHERE server_local_id = p_server_id OR server_local_id = 0
6189 ORDER BY server_local_id;
6190
6191 v_compare_record db_compare_cur%ROWTYPE;
6192 BEGIN
6193 BEGIN
6194 OPEN db_compare_cur(p_server_id);
6195
6196 LOOP
6197 FETCH db_compare_cur
6198 INTO v_compare_record;
6199
6200 EXIT WHEN db_compare_cur%NOTFOUND;
6201
6202 IF (v_compare_record.server_local_id = 0)
6203 THEN
6204 v_source_instance := v_compare_record.instance_name;
6205 v_source_host := v_compare_record.hostname;
6206 v_source_port := v_compare_record.db_listener_port;
6207 v_source_owner := v_compare_record.cz_owner;
6208 v_target_instance := v_compare_record.instance_name;
6209 v_target_host := v_compare_record.hostname;
6210 v_target_port := v_compare_record.db_listener_port;
6211 v_target_owner := v_compare_record.cz_owner;
6212 v_db_link := v_compare_record.fndnam_link_name;
6213 ELSE
6214 v_target_instance := v_compare_record.instance_name;
6215 v_target_host := v_compare_record.hostname;
6216 v_target_port := v_compare_record.db_listener_port;
6217 v_target_owner := v_compare_record.cz_owner;
6218 v_db_link := v_compare_record.fndnam_link_name;
6219 END IF;
6220 END LOOP;
6221
6222 CLOSE db_compare_cur;
6223 EXCEPTION
6224 WHEN OTHERS
6225 THEN
6226 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6227 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6228 END;
6229
6230 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))
6231 THEN
6232 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SRC_TO_TRGT_LINK', 'SQLERRM', SQLERRM);
6233 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RETRIEVE_DB_LINK', SQLCODE);
6237 IF ( ( (LTRIM(RTRIM(UPPER(v_source_instance))) = LTRIM(RTRIM(UPPER(v_target_instance))))
6234 cz_pb_mgr.v_status_code := 'ERR';
6235 END IF;
6236
6238 AND (LTRIM(RTRIM(UPPER(v_source_host))) = LTRIM(RTRIM(UPPER(v_target_host))))
6239 AND (LTRIM(RTRIM(UPPER(v_source_port))) = LTRIM(RTRIM(UPPER(v_target_port))))
6240 )
6241 OR (p_server_id = 0)
6242 )
6243 THEN
6244 cz_pb_mgr.v_db_link := ' ';
6245 ELSE
6246 cz_pb_mgr.v_db_link := '@' || v_db_link || ' ';
6247 END IF;
6248
6249 RETURN cz_pb_mgr.v_db_link;
6250 EXCEPTION
6251 WHEN OTHERS
6252 THEN
6253 RETURN cz_pb_mgr.v_db_link;
6254 END retrieve_db_link;
6255
6256 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6257 ----------------------procedure called from rollback data that deletes the rows
6258 ----------------------inserted into a table during publication process
6259 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6260 primary_key IN VARCHAR2 ,
6261 db_link IN VARCHAR2 ,
6262 plsql_table_name IN VARCHAR2,
6263 primary_key_plsql_table IN cz_pb_mgr.t_ref
6264 )
6265 AS
6266
6267 v_DeleteString VARCHAR2(2000);
6268 v_db_link VARCHAR2(128);
6269
6270 BEGIN
6271 IF ( primary_key_plsql_table.COUNT > 0 ) THEN
6272 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
6273 BEGIN
6274 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table.FIRST||'..'||primary_key_plsql_table.LAST||' LOOP ';
6275 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link||' tgt ';
6276 v_DeleteString := v_DeleteString||' WHERE tgt.'||primary_key||' = '||plsql_table_name||'(m) ';
6277 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
6278 EXECUTE IMMEDIATE v_DeleteString;
6279 EXCEPTION
6280 WHEN OTHERS THEN
6281 RAISE;
6282 END;
6283 END IF;
6284 COMMIT;
6285 EXCEPTION
6286 WHEN OTHERS THEN
6287 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6288 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6289 END delete_from_table;
6290
6291 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6292 ----------------------procedure called from rollback data that deletes the rows
6293 ----------------------inserted into a table during publication process
6294
6295 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6296 primary_key1 IN VARCHAR2 ,
6297 primary_key2 IN VARCHAR2 ,
6298 primary_key3 IN VARCHAR2 ,
6299 db_link IN VARCHAR2 ,
6300 plsql_table_name1 IN VARCHAR2,
6301 plsql_table_name2 IN VARCHAR2,
6302 plsql_table_name3 IN VARCHAR2,
6303 primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6304
6305 AS
6306 v_cursor NUMBER;
6307 v_NumRows NUMBER;
6308 v_DeleteString VARCHAR2(10000);
6309 v_db_link VARCHAR2(128);
6310
6311 BEGIN
6312 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
6313
6314 BEGIN
6315 IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6316 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||' LOOP ';
6317 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link;
6318 v_DeleteString := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
6319 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
6320 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
6321 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
6322 EXECUTE IMMEDIATE v_DeleteString;
6323 END IF;
6324 EXCEPTION
6325 WHEN OTHERS THEN
6326 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6327 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6328 END;
6329 COMMIT;
6330 END;
6331
6332 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6333 ----------------------procedure called from rollback data that deletes the rows
6334 ----------------------inserted into a table during publication process
6335
6336 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6337 primary_key1 IN VARCHAR2 ,
6338 primary_key2 IN VARCHAR2 ,
6339 db_link IN VARCHAR2 ,
6340 plsql_table_name1 IN VARCHAR2,
6341 plsql_table_name2 IN VARCHAR2,
6342 primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6343
6344 AS
6345 v_cursor NUMBER;
6346 v_NumRows NUMBER;
6347 v_DeleteString VARCHAR2(10000);
6348 v_db_link VARCHAR2(128);
6349
6350 BEGIN
6351 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
6352
6353 BEGIN
6354 IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6355 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||' LOOP ';
6356 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link;
6360 EXECUTE IMMEDIATE v_DeleteString;
6357 v_DeleteString := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
6358 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
6359 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
6361 END IF;
6362 EXCEPTION
6363 WHEN OTHERS THEN
6364 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6365 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6366 END;
6367 COMMIT;
6368 END;
6369
6370 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6371 ----------------------procedure called from rollback data that deletes the rows
6372 ----------------------inserted into a table during publication process
6373
6374 PROCEDURE delete_from_table(table_name IN VARCHAR2 ,
6375 primary_key1 IN VARCHAR2 ,
6376 primary_key2 IN VARCHAR2 ,
6377 primary_key3 IN VARCHAR2 ,
6378 primary_key4 IN VARCHAR2 ,
6379 db_link IN VARCHAR2 ,
6380 plsql_table_name1 IN VARCHAR2,
6381 plsql_table_name2 IN VARCHAR2,
6382 plsql_table_name3 IN VARCHAR2,
6383 plsql_table_name4 IN VARCHAR2,
6384 primary_key_plsql_table1 IN OUT NOCOPY cz_pb_mgr.t_ref)
6385
6386 AS
6387 v_cursor NUMBER;
6388 v_NumRows NUMBER;
6389 v_DeleteString VARCHAR2(10000);
6390 v_db_link VARCHAR2(128);
6391
6392 BEGIN
6393 v_db_link := UPPER(LTRIM(RTRIM(db_link)));
6394
6395 BEGIN
6396 IF ( primary_key_plsql_table1.COUNT > 0 ) THEN
6397 v_DeleteString := 'BEGIN FOR M IN '||primary_key_plsql_table1.FIRST||'..'||primary_key_plsql_table1.LAST||' LOOP ';
6398 v_DeleteString := v_DeleteString||' delete from '||table_name||v_db_link;
6399 v_DeleteString := v_DeleteString||' WHERE '||table_name||'.'||primary_key1||' = '||plsql_table_name1||'(m) ';
6400 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key2||'='||plsql_table_name2||'(m) ';
6401 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key3||'='||plsql_table_name3||'(m) ';
6402 v_DeleteString := v_DeleteString||' AND '||table_name||'.'||primary_key4||'='||plsql_table_name4||'(m) ';
6403 v_DeleteString := v_DeleteString||' ; IF (MOD(M,cz_pb_mgr.RECORD_COMMIT_SIZE) = 0) THEN COMMIT; END IF; END LOOP; COMMIT; END; ';
6404 EXECUTE IMMEDIATE v_DeleteString;
6405 END IF;
6406 EXCEPTION
6407 WHEN OTHERS THEN
6408 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_TABLE_ROLLBACK_ERR', 'TABLENAME', table_name);
6409 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.ROLLBACK',SQLCODE);
6410 END;
6411 COMMIT;
6412 END;
6413
6414 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6415 ---------procedure that deletes data of single index arrays
6416 PROCEDURE delete_from_idx_tables(
6417 p_table_name IN VARCHAR2
6418 ,p_primary_key IN VARCHAR2
6419 ,p_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
6420 ,p_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
6421 )
6422 AS
6423 v_deletestring VARCHAR2(2000);
6424 v_idx_id NUMBER;
6425 BEGIN
6426 IF (p_old_array.COUNT > 0)
6427 THEN
6428 FOR i IN p_old_array.FIRST .. p_old_array.LAST
6429 LOOP
6430 v_idx_id := p_idx_array(p_old_array(i));
6431 v_deletestring := ' delete from ' || p_table_name || v_db_link || ' tgt ';
6432 v_deletestring := v_deletestring || ' WHERE tgt.' || p_primary_key || ' = :1';
6433
6434 EXECUTE IMMEDIATE v_deletestring
6435 USING v_idx_id;
6436
6437 IF (MOD(i, cz_pb_mgr.record_commit_size) = 0)
6438 THEN
6439 COMMIT;
6440 END IF;
6441 END LOOP;
6442 END IF;
6443
6444 COMMIT;
6445 EXCEPTION
6446 WHEN OTHERS
6447 THEN
6448 cz_pb_mgr.v_err_message := 'Error during rollback of ' || p_table_name || ' : ' || SQLERRM;
6449 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
6450 END;
6451
6452 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6453 --------in the model publication process
6454 --------a model is published in its entirety
6455 --------if an error occurs during the publishing
6456 --------process the data that has been committed
6457 --------on the target server is rolled back
6458 PROCEDURE rollback_data(p_db_link IN VARCHAR2)
6459 AS
6460 v_insert_string VARCHAR2(2000) := '';
6461 v_database_link VARCHAR2(128);
6462 BEGIN
6463 v_database_link := LTRIM(RTRIM(p_db_link));
6464
6465 IF ((cz_pb_mgr.v_server_id IS NULL) OR(v_database_link = '@'))
6466 THEN
6467 v_database_link := NULL;
6468 END IF;
6469
6470 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);
6471 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);
6472 delete_from_table('cz_devl_projects'
6473 ,'devl_project_id'
6474 ,v_database_link
6475 ,'cz_pb_mgr.v_models_to_be_exported_new'
6476 ,cz_pb_mgr.v_models_to_be_exported_new
6477 );
6481 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);
6478 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);
6479 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);
6480 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);
6482 delete_from_table('cz_model_ref_expls'
6483 ,'model_ref_expl_id'
6484 ,v_database_link
6485 ,'cz_pb_mgr.v_cz_model_ref_expls_new_ref'
6486 ,cz_pb_mgr.v_cz_model_ref_expls_new_ref
6487 );
6488 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);
6489 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);
6490 delete_from_table('cz_des_chart_features'
6491 ,'rule_id'
6492 ,v_database_link
6493 ,'cz_pb_mgr.v_cz_des_feature_rid_new_ref'
6494 ,cz_pb_mgr.v_cz_des_feature_rid_new_ref
6495 );
6496 delete_from_table('cz_des_chart_cells'
6497 ,'rule_id'
6498 ,v_database_link
6499 ,'cz_pb_mgr.v_cz_des_cells_rule_id_new_ref'
6500 ,cz_pb_mgr.v_cz_des_cells_rule_id_new_ref
6501 );
6502
6503 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);
6504 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);
6505 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);
6506 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);
6507 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);
6508 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);
6509 delete_from_table('cz_ui_ref_templates','template_id','template_ui_def_id',
6510 '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',
6511 'cz_pb_mgr.g_REF_TEMPLATE_ID_ref','cz_pb_mgr.g_REF_TEMPL_UI_ref',cz_pb_mgr.g_TEMPLATE_ID_ref);
6512 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);
6513 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);
6514 delete_from_table('cz_signatures','signature_id',v_database_link,'cz_pb_mgr.v_sig_new_ref',cz_pb_mgr.v_sig_new_ref);
6515 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);
6516 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);
6517 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);
6518 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);
6519 delete_from_table('cz_archives','archive_id',v_database_link,'cz_pb_mgr.g_archives_new_ref',cz_pb_mgr.g_archives_new_ref);
6520
6521 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);
6522
6523 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);
6524 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);
6525
6526 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);
6527 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);
6528
6529 DELETE FROM cz_pb_model_exports
6530 WHERE publication_id = cz_pb_mgr.v_publication_id;
6531
6532 COMMIT;
6533 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6534 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);
6535 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ROLLBACKDATA', SQLCODE);
6536 EXCEPTION
6537 WHEN OTHERS
6538 THEN
6539 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6540 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_ROLLBACK_ERR', 'SQLERRM', SQLERRM);
6544
6541 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ROLLBACK', SQLCODE);
6542 RAISE;
6543 END rollback_data;
6545 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6546 -----------procedure updates the status in cz_model_publications and cz_pb_model_exports
6547 -----------@p_publication_id : source publication id
6548 -----------@p_status : publication status
6549 -----------@p_link : database link name
6550 -----------@p_models_exported : source models that have entries in model exports
6551 -----------@x_status : publication status parameter
6552 PROCEDURE update_pb_status(
6553 p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
6554 ,p_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
6555 ,p_models_exported IN OUT NOCOPY cz_pb_mgr.t_ref
6556 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
6557 )
6558 AS
6559 BEGIN
6560 -----update status on the source. p_link is null
6561 update_publication_status(p_publication_id, p_status, ' ');
6562
6563 IF (p_models_exported.COUNT > 0)
6564 THEN
6565 FOR i IN p_models_exported.FIRST .. p_models_exported.LAST
6566 LOOP
6567 UPDATE cz_pb_model_exports t
6568 SET t.status = p_status
6569 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;
6570 END LOOP;
6571
6572 COMMIT;
6573 END IF;
6574
6575 -----set status for concurrent manager
6576 IF (x_status = PUBLICATION_ERROR)
6577 THEN
6578 cz_pb_mgr.global_export_retcode := 2;
6579 END IF;
6580 EXCEPTION
6581 WHEN OTHERS
6582 THEN
6583 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPDATE_ERR', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
6584 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPDPBSTATUS', SQLCODE);
6585 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6586 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
6587 RAISE;
6588 END update_pb_status;
6589
6590 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6591 --------function to validate the source and target schemas.
6592 --------a source model can be published on a target server
6593 --------having the same major and minor schema versions
6594 --------v_count when 0 is a failure else 1 indicates success
6595 FUNCTION validate_schema(target_server_id PLS_INTEGER)
6596 RETURN NUMBER
6597 IS
6598 v_source_major_version cz_db_settings.VALUE%TYPE;
6599 v_source_minor_version cz_db_settings.VALUE%TYPE;
6600 v_target_major_version cz_db_settings.VALUE%TYPE;
6601 v_target_minor_version cz_db_settings.VALUE%TYPE;
6602
6603 CURSOR db_link_cur(p_server_id PLS_INTEGER)
6604 IS
6605 SELECT local_name, fndnam_link_name
6606 FROM cz_servers
6607 WHERE server_local_id = p_server_id;
6608
6609 v_link_record db_link_cur%ROWTYPE;
6610 v_str VARCHAR2(4000);
6611 db_schema_compare_cur ref_cursor;
6612 v_count PLS_INTEGER := 0;
6613 v_db_link cz_servers.fndnam_link_name%TYPE;
6614 BEGIN
6615 OPEN db_link_cur(target_server_id);
6616
6617 LOOP
6618 FETCH db_link_cur
6619 INTO v_link_record;
6620
6621 EXIT WHEN db_link_cur%NOTFOUND;
6622 v_db_link := '@' || v_link_record.fndnam_link_name;
6623 cz_pb_mgr.v_server_local_name := v_link_record.local_name;
6624 END LOOP;
6625
6626 CLOSE db_link_cur;
6627
6628 IF LTRIM(RTRIM(v_db_link)) = '@'
6629 THEN
6630 v_count := 1;
6631 ELSE
6632 OPEN db_schema_compare_cur FOR ' select count(*)'
6633 || ' '
6634 || 'from cz_db_settings,'
6635 || ' '
6636 || 'cz_db_settings'
6637 || v_db_link
6638 || ' tgt'
6639 || ' '
6640 || 'where cz_db_settings.setting_id = tgt.setting_id'
6641 || ' '
6642 || 'and cz_db_settings.value = tgt.value'
6643 || ' '
6644 || 'and cz_db_settings.setting_id = ''MAJOR_VERSION'''
6645 || ' '
6646 || 'INTERSECT'
6647 || ' '
6648 || 'select count(*)'
6649 || ' '
6650 || 'from cz_db_settings,'
6651 || ' '
6652 || 'cz_db_settings'
6653 || v_db_link
6654 || ' tgt'
6655 || ' '
6656 || 'where cz_db_settings.setting_id = tgt.setting_id'
6657 || ' '
6658 || 'and cz_db_settings.value = tgt.value'
6659 || ' '
6660 || 'and cz_db_settings.setting_id = ''MINOR_VERSION'' ';
6661
6665
6662 LOOP
6663 FETCH db_schema_compare_cur
6664 INTO v_count;
6666 EXIT WHEN db_schema_compare_cur%NOTFOUND;
6667 END LOOP;
6668
6669 CLOSE db_schema_compare_cur;
6670 END IF;
6671
6672 --------set commit size variable
6673 BEGIN
6674 SELECT VALUE
6675 INTO cz_pb_mgr.record_commit_size
6676 FROM cz_db_settings
6677 WHERE cz_db_settings.setting_id = record_commit_str;
6678 EXCEPTION
6679 WHEN OTHERS
6680 THEN
6681 cz_pb_mgr.record_commit_size := 500;
6682 END;
6683
6684 RETURN v_count;
6685 EXCEPTION
6686 WHEN NO_DATA_FOUND
6687 THEN
6688 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_LINK_NAME');
6689 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
6690 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6691 RETURN v_count;
6692 WHEN OTHERS
6693 THEN
6694 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_VALIDATION_ERR');
6695 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VALIDATE_SCHEMA', SQLCODE);
6696 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6697 RETURN v_count;
6698 END validate_schema;
6699
6700 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6701 ------------ procedures for refreshing item sub-schema
6702 PROCEDURE load_usages
6703 AS
6704 l_sql_string VARCHAR2(32000);
6705 BEGIN
6706 cz_pb_mgr.v_model_usages_tbl.DELETE;
6707 cz_pb_mgr.v_usages_lang_tbl.DELETE;
6708
6709 BEGIN
6710 SELECT model_usage_id
6711 BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl
6712 FROM cz_model_usages;
6713 EXCEPTION
6714 WHEN NO_DATA_FOUND
6715 THEN
6716 cz_pb_mgr.v_err_message := 'No model usages found';
6717 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6718 WHEN OTHERS
6719 THEN
6720 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
6721 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6722 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6723 RAISE;
6724 END;
6725
6726 IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
6727 THEN
6728 l_sql_string :=
6729 'BEGIN '
6730 || ' DELETE FROM CZ_MODEL_USAGES'
6731 || cz_pb_mgr.v_db_link
6732 || '; '
6733 || ' '
6734 || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
6735 || ' '
6736 || 'LOOP'
6737 || ' '
6738 || 'INSERT INTO cz_model_usages'
6739 || cz_pb_mgr.v_db_link
6740 || ' '
6741 || '(MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE)'
6742 || ' '
6743 || 'SELECT MODEL_USAGE_ID,NAME,DESCRIPTION,NOTE,IN_USE FROM cz_model_usages t'
6744 || ' '
6745 || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i);'
6746 || ' '
6747 || 'END LOOP;'
6748 || ' '
6749 || 'END;';
6750
6751 EXECUTE IMMEDIATE l_sql_string;
6752 END IF;
6753
6754 cz_pb_mgr.v_model_usages_tbl.DELETE;
6755 cz_pb_mgr.v_usages_lang_tbl.DELETE;
6756
6757 BEGIN
6758 SELECT model_usage_id, LANGUAGE
6759 BULK COLLECT INTO cz_pb_mgr.v_model_usages_tbl, v_usages_lang_tbl
6760 FROM cz_model_usages_tl;
6761 EXCEPTION
6762 WHEN NO_DATA_FOUND
6763 THEN
6764 cz_pb_mgr.v_err_message := 'No model usages translations found';
6765 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6766 WHEN OTHERS
6767 THEN
6768 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_usages_tl', 'SQLERRM', SQLERRM);
6769 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USGS', SQLCODE);
6770 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6771 RAISE;
6772 END;
6773
6774 IF (cz_pb_mgr.v_model_usages_tbl.COUNT > 0)
6775 THEN
6776 EXECUTE IMMEDIATE 'BEGIN'
6777 || ' '
6778 || 'DELETE FROM CZ_MODEL_USAGES_TL'
6779 || cz_pb_mgr.v_db_link
6780 || ';'
6781 || ' '
6782 || 'FOR I IN cz_pb_mgr.v_model_usages_tbl.FIRST..cz_pb_mgr.v_model_usages_tbl.LAST'
6783 || ' '
6784 || 'LOOP'
6785 || ' '
6786 || 'BEGIN'
6787 || ' '
6788 || 'INSERT INTO cz_model_usages_tl'
6789 || cz_pb_mgr.v_db_link
6790 || ' '
6791 || '(MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION)'
6792 || ' '
6793 || 'SELECT MODEL_USAGE_ID,LANGUAGE,SOURCE_LANG,DESCRIPTION FROM cz_model_usages_tl t'
6794 || ' '
6798 || ' '
6795 || 'WHERE t.model_usage_id = cz_pb_mgr.v_model_usages_tbl(i)'
6796 || ' '
6797 || 'and t.language=cz_pb_mgr.v_usages_lang_tbl(i);'
6799 || 'END;'
6800 || ' '
6801 || 'END LOOP;'
6802 || ' '
6803 || 'END;';
6804 END IF;
6805
6806 cz_pb_mgr.v_model_usages_tbl.DELETE;
6807 cz_pb_mgr.v_usages_lang_tbl.DELETE;
6808 EXCEPTION
6809 WHEN OTHERS
6810 THEN
6811 ROLLBACK;
6812 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
6813 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.USAGES', SQLCODE);
6814 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
6815 RAISE;
6816 END load_usages;
6817
6818 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6819 ----procedure that checks if a model has been published earlier
6820 ----@p_publication_id : publication_id of the publication request
6821 ----x_record_count : returns count of earlier publications
6822 PROCEDURE chk_if_aleady_published(p_publication_id IN cz_model_publications.publication_id%TYPE, x_record_count IN OUT NOCOPY NUMBER)
6823 AS
6824 BEGIN
6825 IF (g_object_type = MODEL_PUBLICATION)
6826 THEN
6827 SELECT COUNT(*)
6828 INTO x_record_count
6829 FROM cz_model_publications z
6830 WHERE z.object_id = (SELECT object_id
6831 FROM cz_model_publications
6832 WHERE cz_model_publications.publication_id = p_publication_id)
6833 AND z.server_id = (SELECT server_id
6834 FROM cz_model_publications
6835 WHERE cz_model_publications.publication_id = p_publication_id)
6836 AND z.model_last_struct_update =
6837 (SELECT last_struct_update
6838 FROM cz_devl_projects
6839 WHERE cz_devl_projects.devl_project_id =
6840 (SELECT object_id
6841 FROM cz_model_publications
6842 WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = '0'))
6843 AND z.export_status IN('OK', 'PUP')
6844 AND z.source_target_flag = g_source_flag
6845 AND z.deleted_flag = record_not_deleted;
6846 ELSIF(g_object_type = template_publication)
6847 THEN
6848 SELECT COUNT(*)
6849 INTO x_record_count
6850 FROM cz_model_publications z
6851 WHERE z.object_id = (SELECT object_id
6852 FROM cz_model_publications
6853 WHERE cz_model_publications.publication_id = p_publication_id)
6854 AND z.server_id = (SELECT server_id
6855 FROM cz_model_publications
6856 WHERE cz_model_publications.publication_id = p_publication_id)
6857 AND z.export_status IN('OK', 'PUP')
6858 AND z.source_target_flag = g_source_flag
6859 AND z.deleted_flag = record_not_deleted;
6860 END IF;
6861 EXCEPTION
6862 WHEN OTHERS
6863 THEN
6864 RAISE;
6865 END chk_if_aleady_published;
6866
6867 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6868 -----procedure that gets the date on which the model was last published
6869 -----@p_model_id: model_id on the publication request
6870 -----@p_server_id : server_id on the publication request
6871 -----x_last_xfr_activity : last published date
6872 PROCEDURE get_last_xfr_activity(
6873 p_model_id IN cz_model_publications.model_id%TYPE
6874 ,p_server_id IN cz_model_publications.server_id%TYPE
6875 ,x_last_xfr_activity IN OUT NOCOPY DATE
6876 )
6877 AS
6878 BEGIN
6879 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
6880 THEN
6881 SELECT last_xfr_activity
6882 INTO x_last_xfr_activity
6883 FROM cz_pb_model_exports
6884 WHERE cz_pb_model_exports.export_id =
6885 (SELECT MAX(export_id)
6886 FROM cz_pb_model_exports z
6887 WHERE z.root_model_id = p_model_id
6888 AND z.server_id = p_server_id
6889 AND z.status = 'OK'
6890 AND z.publication_id IN(
6891 SELECT publication_id
6892 FROM cz_model_publications
6893 WHERE export_status IN('OK', 'PUP')
6894 AND server_id = p_server_id
6895 AND publication_mode = cz_model_migration_pvt.mode_migration));
6896 ELSE
6897 SELECT last_xfr_activity
6898 INTO x_last_xfr_activity
6899 FROM cz_pb_model_exports
6900 WHERE cz_pb_model_exports.export_id =
6901 (SELECT MAX(export_id)
6902 FROM cz_pb_model_exports z
6903 WHERE z.root_model_id = p_model_id
6904 AND z.server_id = p_server_id
6905 AND z.status = 'OK'
6906 AND z.publication_id IN(
6910 AND server_id = p_server_id
6907 SELECT publication_id
6908 FROM cz_model_publications
6909 WHERE export_status IN('OK', 'PUP')
6911 AND publication_mode <> cz_model_migration_pvt.mode_migration));
6912 END IF;
6913 EXCEPTION
6914 WHEN OTHERS
6915 THEN
6916 x_last_xfr_activity := NULL;
6917 END get_last_xfr_activity;
6918
6919 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6920 -----procedure that retrieves the last update date from cz_expression nodes
6921 -----required to check if rules have been changed since it was last published
6922 PROCEDURE get_max_expr_date(p_model_id cz_model_publications.model_id%TYPE, x_expr_node_date IN OUT NOCOPY DATE)
6923 AS
6924 BEGIN
6925 SELECT MAX(last_update_date)
6926 INTO x_expr_node_date
6927 FROM cz_expression_nodes t
6928 WHERE t.deleted_flag = record_not_deleted
6929 AND t.expr_type <> 208
6930 AND EXISTS(SELECT 1
6931 FROM cz_rules
6932 WHERE rule_id = t.rule_id AND devl_project_id = p_model_id AND deleted_flag = record_not_deleted)
6933 AND t.deleted_flag = record_not_deleted
6934 AND t.expr_type <> 208;
6935 EXCEPTION
6936 WHEN OTHERS
6937 THEN
6938 x_expr_node_date := cz_utils.epoch_begin;
6939 END get_max_expr_date;
6940
6941 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6942 -----procedure that retrieves the last_struct_update date
6943 -----required to check if ps structure been changed since model was last published
6944 PROCEDURE get_last_struct_date(p_model_id cz_model_publications.model_id%TYPE, x_last_struct_date IN OUT NOCOPY DATE)
6945 AS
6946 BEGIN
6947 SELECT last_struct_update
6948 INTO x_last_struct_date
6949 FROM cz_devl_projects t
6950 WHERE t.deleted_flag = record_not_deleted AND t.devl_project_id = p_model_id;
6951 EXCEPTION
6952 WHEN OTHERS
6953 THEN
6954 x_last_struct_date := cz_utils.epoch_begin;
6955 END get_last_struct_date;
6956
6957 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
6958 -----procedure that returns the source ui_defs for export
6959 -----@p_model_id : model that is exported
6960 -----@p_src_models : source models array
6961 -----x_ui_def_ref : output of source ui defs
6962 PROCEDURE get_source_uis(
6963 p_model_id IN cz_model_publications.model_id%TYPE
6964 ,p_src_models IN cz_pb_mgr.t_ref
6965 ,x_ui_def_ref IN OUT NOCOPY cz_pb_mgr.t_ref
6966 )
6967 AS
6968 v_ui_def_count NUMBER := 0;
6969 v_src_uis_tbl cz_pb_mgr.t_ref;
6970 v_cz_ui_defs_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
6971 l_export_model_id cz_devl_projects.devl_project_id%TYPE;
6972 BEGIN
6973 IF (p_src_models.COUNT > 0)
6974 THEN
6975 x_ui_def_ref.DELETE;
6976
6977 FOR i IN p_src_models.FIRST .. p_src_models.LAST
6978 LOOP
6979 l_export_model_id := p_src_models(i);
6980 v_src_uis_tbl.DELETE;
6981
6982 BEGIN
6983 SELECT cz_ui_defs.ui_def_id
6984 BULK COLLECT INTO v_src_uis_tbl
6985 FROM cz_ui_defs
6986 WHERE cz_ui_defs.devl_project_id = l_export_model_id
6987 AND cz_ui_defs.deleted_flag = '0'
6988 AND cz_ui_defs.ui_style <> 7
6989 AND cz_ui_defs.NAME <> 'MUID';
6990 EXCEPTION
6991 WHEN OTHERS
6992 THEN
6993 cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
6994 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
6995 END;
6996
6997 IF (v_src_uis_tbl.COUNT > 0)
6998 THEN
6999 v_ui_def_count := x_ui_def_ref.COUNT;
7000
7001 FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7002 LOOP
7003 IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7004 THEN
7005 v_ui_def_count := v_ui_def_count + 1;
7006 x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7007 v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7008 END IF;
7009 END LOOP;
7010 END IF;
7011
7012 v_src_uis_tbl.DELETE;
7013
7014 BEGIN
7015 SELECT DISTINCT ui_def_ref_id
7016 BULK COLLECT INTO v_src_uis_tbl
7017 FROM cz_ui_nodes
7018 WHERE cz_ui_nodes.ui_def_id IN(
7019 SELECT cz_ui_defs.ui_def_id
7020 FROM cz_ui_defs
7021 WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7022 AND cz_ui_defs.NAME <> 'MUID')
7023 AND cz_ui_nodes.ui_def_ref_id IN(
7024 SELECT cz_ui_defs.ui_def_id
7025 FROM cz_ui_defs
7026 WHERE cz_ui_defs.devl_project_id = l_export_model_id AND cz_ui_defs.deleted_flag = '0'
7027 AND cz_ui_defs.NAME <> 'MUID')
7031 WHEN OTHERS
7028 AND cz_ui_nodes.deleted_flag = '0'
7029 AND cz_ui_nodes.ui_def_ref_id IS NOT NULL;
7030 EXCEPTION
7032 THEN
7033 cz_pb_mgr.v_err_message := SUBSTR('bulk collection into cz_pb_mgr.v_cz_ui_defs_old_tbl: ' || SQLERRM, 1, 2000);
7034 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZUIDEFS', SQLCODE);
7035 END;
7036
7037 IF (v_src_uis_tbl.COUNT > 0)
7038 THEN
7039 v_ui_def_count := x_ui_def_ref.COUNT;
7040
7041 FOR k IN v_src_uis_tbl.FIRST .. v_src_uis_tbl.LAST
7042 LOOP
7043 IF (NOT v_cz_ui_defs_old_ref_idx_ref.EXISTS(v_src_uis_tbl(k)))
7044 THEN
7045 v_ui_def_count := v_ui_def_count + 1;
7046 x_ui_def_ref(v_ui_def_count) := v_src_uis_tbl(k);
7047 v_cz_ui_defs_old_ref_idx_ref(v_src_uis_tbl(k)) := v_src_uis_tbl(k);
7048 END IF;
7049 END LOOP;
7050 END IF;
7051 END LOOP; /* end loop of FOR I IN p_src_models.FIRST */
7052 END IF; /* end if of (p_src_models.COUNT > 0) */
7053 EXCEPTION
7054 WHEN OTHERS
7055 THEN
7056 RAISE;
7057 END get_source_uis;
7058
7059 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7060 ----procedure that returns the max last_update_date of ui schema
7061 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)
7062 AS
7063 v_ui_def_id_date cz_ui_defs.last_update_date%TYPE;
7064 v_ui_node_id_date cz_ui_nodes.last_update_date%TYPE;
7065 v_ui_props_date cz_ui_nodes.last_update_date%TYPE;
7066 v_ui_node_props_date cz_ui_nodes.last_update_date%TYPE;
7067 v_ui_node_intl_date cz_ui_nodes.last_update_date%TYPE;
7068 v_initialized_date DATE;
7069 v_ui_pages_date DATE;
7070 v_ui_pages_capt_date DATE;
7071 v_ui_page_sets_date DATE;
7072 v_ui_page_refs_date DATE;
7073 v_ui_pg_ref_capt_date DATE;
7074 v_ui_refs_date DATE;
7075 v_ui_templs_date DATE;
7076 v_ui_cont_templs_date DATE;
7077 v_ui_actions_date DATE;
7078 v_ui_images_date DATE;
7079 v_page_elements_date DATE;
7080
7081 CURSOR ui_def_cur(ui_ui_def_id NUMBER)
7082 IS
7083 SELECT last_update_date
7084 FROM cz_ui_defs
7085 WHERE cz_ui_defs.ui_def_id = ui_ui_def_id AND cz_ui_defs.deleted_flag = '0'
7086 ORDER BY last_update_date DESC;
7087
7088 CURSOR ui_nodes_cur(node_ui_def_id NUMBER)
7089 IS
7090 SELECT last_update_date
7091 FROM cz_ui_nodes
7092 WHERE cz_ui_nodes.ui_def_id = node_ui_def_id AND cz_ui_nodes.deleted_flag = '0'
7093 ORDER BY last_update_date DESC;
7094
7095 CURSOR ui_properties_cur(prop_ui_def_id NUMBER)
7096 IS
7097 SELECT last_update_date
7098 FROM cz_ui_properties
7099 WHERE cz_ui_properties.ui_def_id = prop_ui_def_id AND cz_ui_properties.deleted_flag = '0'
7100 ORDER BY last_update_date DESC;
7101
7102 CURSOR ui_node_props_cur(nodeprops_ui_def_id NUMBER)
7103 IS
7104 SELECT last_update_date
7105 FROM cz_ui_node_props
7106 WHERE cz_ui_node_props.ui_def_id = nodeprops_ui_def_id AND cz_ui_node_props.deleted_flag = '0'
7107 ORDER BY last_update_date DESC;
7108
7109 CURSOR ui_intl_texts_cur(p_ui_def_id NUMBER)
7110 IS
7111 SELECT last_update_date
7112 FROM cz_intl_texts
7113 WHERE intl_text_id IN(SELECT f.tool_tip_id
7114 FROM cz_ui_nodes f
7115 WHERE f.ui_def_id = p_ui_def_id AND f.deleted_flag = '0'
7116 UNION
7117 SELECT g.caption_id
7118 FROM cz_ui_nodes g
7119 WHERE g.ui_def_id = p_ui_def_id AND g.deleted_flag = '0')
7120 ORDER BY last_update_date DESC;
7121
7122 CURSOR ui_pages_cur(ui_pages_def_id NUMBER)
7123 IS
7124 SELECT last_update_date
7125 FROM cz_ui_pages
7126 WHERE cz_ui_pages.ui_def_id = ui_pages_def_id
7127 ORDER BY last_update_date DESC;
7128
7129 CURSOR ui_pages_capt_cur(p_ui_def_id NUMBER)
7130 IS
7131 SELECT last_update_date
7132 FROM cz_intl_texts
7133 WHERE intl_text_id IN(SELECT caption_text_id
7134 FROM cz_ui_pages
7135 WHERE cz_ui_pages.ui_def_id = p_ui_def_id)
7136 ORDER BY last_update_date DESC;
7137
7138 CURSOR ui_page_sets_cur(p_ui_def_id NUMBER)
7139 IS
7140 SELECT last_update_date
7141 FROM cz_ui_page_sets
7142 WHERE cz_ui_page_sets.ui_def_id = p_ui_def_id AND cz_ui_page_sets.deleted_flag = '0'
7143 ORDER BY last_update_date DESC;
7144
7145 CURSOR ui_page_refs_cur(p_ui_def_id NUMBER)
7146 IS
7147 SELECT last_update_date
7148 FROM cz_ui_page_refs
7149 WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id AND cz_ui_page_refs.deleted_flag = '0'
7150 ORDER BY last_update_date DESC;
7154 SELECT last_update_date
7151
7152 CURSOR ui_page_refs_capt_cur(p_ui_def_id NUMBER)
7153 IS
7155 FROM cz_intl_texts
7156 WHERE intl_text_id IN(SELECT caption_text_id
7157 FROM cz_ui_page_refs
7158 WHERE cz_ui_page_refs.ui_def_id = p_ui_def_id)
7159 ORDER BY last_update_date DESC;
7160
7161 CURSOR ui_refs_cur(p_ui_def_id NUMBER)
7162 IS
7163 SELECT last_update_date
7164 FROM cz_ui_refs
7165 WHERE cz_ui_refs.ui_def_id = p_ui_def_id AND cz_ui_refs.deleted_flag = '0'
7166 ORDER BY last_update_date DESC;
7167
7168 CURSOR ui_templs_cur(p_ui_def_id NUMBER)
7169 IS
7170 SELECT last_update_date
7171 FROM cz_ui_templates
7172 WHERE cz_ui_templates.ui_def_id = p_ui_def_id AND cz_ui_templates.deleted_flag = '0'
7173 ORDER BY last_update_date DESC;
7174
7175 CURSOR ui_cont_templs_cur(p_ui_def_id NUMBER)
7176 IS
7177 SELECT last_update_date
7178 FROM cz_ui_cont_type_templs
7179 WHERE cz_ui_cont_type_templs.ui_def_id = p_ui_def_id AND cz_ui_cont_type_templs.deleted_flag = '0'
7180 ORDER BY last_update_date DESC;
7181
7182 CURSOR ui_actions_cur(p_ui_def_id NUMBER)
7183 IS
7184 SELECT last_update_date
7185 FROM cz_ui_actions
7186 WHERE cz_ui_actions.ui_def_id = p_ui_def_id
7187 ORDER BY last_update_date DESC;
7188
7189 CURSOR ui_images_cur(p_ui_def_id NUMBER)
7190 IS
7191 SELECT last_update_date
7192 FROM cz_ui_images
7193 WHERE cz_ui_images.ui_def_id = p_ui_def_id
7194 ORDER BY last_update_date DESC;
7195 CURSOR ui_page_elements(p_ui_def_id NUMBER)
7196 IS
7197 SELECT last_update_date
7198 FROM cz_ui_page_elements
7199 WHERE cz_ui_page_elements.ui_def_id = p_ui_def_id
7200 ORDER BY last_update_date DESC;
7201 BEGIN
7202 v_initialized_date := cz_utils.epoch_begin;
7203 v_ui_def_id_date := v_initialized_date;
7204 v_ui_node_id_date := v_initialized_date;
7205 v_ui_props_date := v_initialized_date;
7206 v_ui_node_props_date := v_initialized_date;
7207 v_ui_node_intl_date := v_initialized_date;
7208 v_ui_pages_date := v_initialized_date;
7209 v_ui_pages_capt_date := v_initialized_date;
7210 v_ui_page_sets_date := v_initialized_date;
7211 v_ui_page_refs_date := v_initialized_date;
7212 v_ui_pg_ref_capt_date := v_initialized_date;
7213 v_ui_refs_date := v_initialized_date;
7214 v_ui_templs_date := v_initialized_date;
7215 v_ui_cont_templs_date := v_initialized_date;
7216 v_ui_actions_date := v_initialized_date;
7217 v_ui_images_date := v_initialized_date;
7218
7219 BEGIN
7220 OPEN ui_def_cur(p_ui_def_id);
7221
7222 LOOP
7223 FETCH ui_def_cur
7224 INTO v_ui_def_id_date;
7225
7226 EXIT WHEN ui_def_cur%NOTFOUND;
7227 EXIT WHEN ui_def_cur%ROWCOUNT = 1;
7228 END LOOP;
7229
7230 CLOSE ui_def_cur;
7231 EXCEPTION
7232 WHEN OTHERS
7233 THEN
7234 v_ui_def_id_date := cz_utils.epoch_begin;
7235
7236 CLOSE ui_def_cur;
7237 END;
7238
7239 BEGIN
7240 OPEN ui_nodes_cur(p_ui_def_id);
7241
7242 LOOP
7243 FETCH ui_nodes_cur
7244 INTO v_ui_node_id_date;
7245
7246 EXIT WHEN ui_nodes_cur%NOTFOUND;
7247 EXIT WHEN ui_nodes_cur%ROWCOUNT = 1;
7248 END LOOP;
7249
7250 CLOSE ui_nodes_cur;
7251 EXCEPTION
7252 WHEN OTHERS
7253 THEN
7254 v_ui_node_id_date := cz_utils.epoch_begin;
7255
7256 CLOSE ui_nodes_cur;
7257 END;
7258
7259 BEGIN
7260 OPEN ui_properties_cur(p_ui_def_id);
7261
7262 LOOP
7263 FETCH ui_properties_cur
7264 INTO v_ui_props_date;
7265
7266 EXIT WHEN ui_properties_cur%NOTFOUND;
7267 EXIT WHEN ui_properties_cur%ROWCOUNT = 1;
7268 END LOOP;
7269
7270 CLOSE ui_properties_cur;
7271 EXCEPTION
7272 WHEN OTHERS
7273 THEN
7274 v_ui_props_date := cz_utils.epoch_begin;
7275
7276 CLOSE ui_properties_cur;
7277 END;
7278
7279 BEGIN
7280 OPEN ui_node_props_cur(p_ui_def_id);
7281
7282 LOOP
7283 FETCH ui_node_props_cur
7284 INTO v_ui_node_props_date;
7285
7286 EXIT WHEN ui_node_props_cur%NOTFOUND;
7287 EXIT WHEN ui_node_props_cur%ROWCOUNT = 1;
7288 END LOOP;
7289
7290 CLOSE ui_node_props_cur;
7291 EXCEPTION
7292 WHEN OTHERS
7293 THEN
7294 v_ui_node_props_date := cz_utils.epoch_begin;
7295
7296 CLOSE ui_node_props_cur;
7297 END;
7298
7299 BEGIN
7300 OPEN ui_intl_texts_cur(p_ui_def_id);
7301
7302 LOOP
7303 FETCH ui_intl_texts_cur
7304 INTO v_ui_node_intl_date;
7305
7306 EXIT WHEN ui_intl_texts_cur%NOTFOUND;
7307 EXIT WHEN ui_intl_texts_cur%ROWCOUNT = 1;
7308 END LOOP;
7309
7313 THEN
7310 CLOSE ui_intl_texts_cur;
7311 EXCEPTION
7312 WHEN OTHERS
7314 v_ui_node_intl_date := cz_utils.epoch_begin;
7315
7316 CLOSE ui_intl_texts_cur;
7317 END;
7318
7319 BEGIN
7320 OPEN ui_pages_cur(p_ui_def_id);
7321
7322 LOOP
7323 FETCH ui_pages_cur
7324 INTO v_ui_pages_date;
7325
7326 EXIT WHEN ui_pages_cur%NOTFOUND;
7327 EXIT WHEN ui_pages_cur%ROWCOUNT = 1;
7328 END LOOP;
7329
7330 CLOSE ui_pages_cur;
7331 EXCEPTION
7332 WHEN OTHERS
7333 THEN
7334 v_ui_pages_date := cz_utils.epoch_begin;
7335
7336 CLOSE ui_pages_cur;
7337 END;
7338
7339 BEGIN
7340 OPEN ui_pages_capt_cur(p_ui_def_id);
7341
7342 LOOP
7343 FETCH ui_pages_capt_cur
7344 INTO v_ui_pages_capt_date;
7345
7346 EXIT WHEN ui_pages_capt_cur%NOTFOUND;
7347 EXIT WHEN ui_pages_capt_cur%ROWCOUNT = 1;
7348 END LOOP;
7349
7350 CLOSE ui_pages_capt_cur;
7351 EXCEPTION
7352 WHEN OTHERS
7353 THEN
7354 v_ui_pages_capt_date := cz_utils.epoch_begin;
7355
7356 CLOSE ui_pages_capt_cur;
7357 END;
7358
7359 BEGIN
7360 OPEN ui_page_sets_cur(p_ui_def_id);
7361
7362 LOOP
7363 FETCH ui_page_sets_cur
7364 INTO v_ui_page_sets_date;
7365
7366 EXIT WHEN ui_page_sets_cur%NOTFOUND;
7367 EXIT WHEN ui_page_sets_cur%ROWCOUNT = 1;
7368 END LOOP;
7369
7370 CLOSE ui_page_sets_cur;
7371 EXCEPTION
7372 WHEN OTHERS
7373 THEN
7374 v_ui_page_sets_date := cz_utils.epoch_begin;
7375
7376 CLOSE ui_page_sets_cur;
7377 END;
7378
7379 BEGIN
7380 OPEN ui_page_refs_cur(p_ui_def_id);
7381
7382 LOOP
7383 FETCH ui_page_refs_cur
7384 INTO v_ui_page_refs_date;
7385
7386 EXIT WHEN ui_page_refs_cur%NOTFOUND;
7387 EXIT WHEN ui_page_refs_cur%ROWCOUNT = 1;
7388 END LOOP;
7389
7390 CLOSE ui_page_refs_cur;
7391 EXCEPTION
7392 WHEN OTHERS
7393 THEN
7394 v_ui_page_refs_date := cz_utils.epoch_begin;
7395
7396 CLOSE ui_page_refs_cur;
7397 END;
7398
7399 BEGIN
7400 OPEN ui_page_refs_capt_cur(p_ui_def_id);
7401
7402 LOOP
7403 FETCH ui_page_refs_capt_cur
7404 INTO v_ui_pg_ref_capt_date;
7405
7406 EXIT WHEN ui_page_refs_capt_cur%NOTFOUND;
7407 EXIT WHEN ui_page_refs_capt_cur%ROWCOUNT = 1;
7408 END LOOP;
7409
7410 CLOSE ui_page_refs_capt_cur;
7411 EXCEPTION
7412 WHEN OTHERS
7413 THEN
7414 v_ui_pg_ref_capt_date := cz_utils.epoch_begin;
7415
7416 CLOSE ui_page_refs_capt_cur;
7417 END;
7418
7419 BEGIN
7420 OPEN ui_refs_cur(p_ui_def_id);
7421
7422 LOOP
7423 FETCH ui_refs_cur
7424 INTO v_ui_refs_date;
7425
7426 EXIT WHEN ui_refs_cur%NOTFOUND;
7427 EXIT WHEN ui_refs_cur%ROWCOUNT = 1;
7428 END LOOP;
7429
7430 CLOSE ui_refs_cur;
7431 EXCEPTION
7432 WHEN OTHERS
7433 THEN
7434 v_ui_refs_date := cz_utils.epoch_begin;
7435
7436 CLOSE ui_refs_cur;
7437 END;
7438
7439 BEGIN
7440 OPEN ui_templs_cur(p_ui_def_id);
7441
7442 LOOP
7443 FETCH ui_templs_cur
7444 INTO v_ui_templs_date;
7445
7446 EXIT WHEN ui_templs_cur%NOTFOUND;
7447 EXIT WHEN ui_templs_cur%ROWCOUNT = 1;
7448 END LOOP;
7449
7450 CLOSE ui_templs_cur;
7451 EXCEPTION
7452 WHEN OTHERS
7453 THEN
7454 v_ui_templs_date := cz_utils.epoch_begin;
7455
7456 CLOSE ui_templs_cur;
7457 END;
7458
7459 BEGIN
7460 OPEN ui_cont_templs_cur(p_ui_def_id);
7461
7462 LOOP
7463 FETCH ui_cont_templs_cur
7464 INTO v_ui_cont_templs_date;
7465
7466 EXIT WHEN ui_cont_templs_cur%NOTFOUND;
7467 EXIT WHEN ui_cont_templs_cur%ROWCOUNT = 1;
7468 END LOOP;
7469
7470 CLOSE ui_cont_templs_cur;
7471 EXCEPTION
7472 WHEN OTHERS
7473 THEN
7474 v_ui_cont_templs_date := cz_utils.epoch_begin;
7475
7476 CLOSE ui_cont_templs_cur;
7477 END;
7478
7479 BEGIN
7480 OPEN ui_actions_cur(p_ui_def_id);
7481
7482 LOOP
7483 FETCH ui_actions_cur
7484 INTO v_ui_actions_date;
7485
7486 EXIT WHEN ui_actions_cur%NOTFOUND;
7487 EXIT WHEN ui_actions_cur%ROWCOUNT = 1;
7488 END LOOP;
7489
7490 CLOSE ui_actions_cur;
7491 EXCEPTION
7492 WHEN OTHERS
7493 THEN
7494 v_ui_actions_date := cz_utils.epoch_begin;
7498
7495
7496 CLOSE ui_actions_cur;
7497 END;
7499 BEGIN
7500 OPEN ui_images_cur(p_ui_def_id);
7501
7502 LOOP
7503 FETCH ui_images_cur
7504 INTO v_ui_images_date;
7505
7506 EXIT WHEN ui_images_cur%NOTFOUND;
7507 EXIT WHEN ui_images_cur%ROWCOUNT = 1;
7508 END LOOP;
7509
7510 CLOSE ui_images_cur;
7511 EXCEPTION
7512 WHEN OTHERS
7513 THEN
7514 v_ui_images_date := cz_utils.epoch_begin;
7515
7516 CLOSE ui_images_cur;
7517 END;
7518
7519 BEGIN
7520 OPEN ui_page_elements(p_ui_def_id);
7521
7522 LOOP
7523 FETCH ui_page_elements
7524 INTO v_page_elements_date;
7525
7526 EXIT WHEN ui_page_elements%NOTFOUND;
7527 EXIT WHEN ui_page_elements%ROWCOUNT = 1;
7528 END LOOP;
7529
7530 CLOSE ui_page_elements;
7531 EXCEPTION
7532 WHEN OTHERS
7533 THEN
7534 v_page_elements_date := cz_utils.epoch_begin;
7535 CLOSE ui_page_elements;
7536 END;
7537 BEGIN
7538 SELECT MAX(GREATEST(v_ui_def_id_date
7539 ,v_ui_node_id_date
7540 ,v_ui_props_date
7541 ,v_ui_node_props_date
7542 ,v_ui_node_intl_date
7543 ,v_ui_pages_date
7544 ,v_ui_pages_capt_date
7545 ,v_ui_page_sets_date
7546 ,v_ui_page_refs_date
7547 ,v_ui_page_refs_date
7548 ,v_ui_pg_ref_capt_date
7549 ,v_ui_refs_date
7550 ,v_ui_templs_date
7551 ,v_ui_cont_templs_date
7552 ,v_ui_actions_date
7553 ,v_ui_images_date
7554 ,v_page_elements_date
7555 )
7556 )
7557 INTO x_max_update_date
7558 FROM DUAL;
7559 EXCEPTION
7560 WHEN OTHERS
7561 THEN
7562 x_max_update_date := cz_utils.epoch_begin;
7563 END;
7564 EXCEPTION
7565 WHEN OTHERS
7566 THEN
7567 RAISE;
7568 END get_max_ui_date;
7569
7570 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7571 -------procedure that retrieves all source models
7572 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)
7573 AS
7574 v_count PLS_INTEGER := 0;
7575 v_component_id cz_model_ref_expls.component_id%TYPE;
7576
7577 CURSOR models_cur(in_root_model NUMBER)
7578 IS
7579 SELECT DISTINCT component_id
7580 FROM cz_model_ref_expls x
7581 WHERE x.model_id = in_root_model AND x.ps_node_type IN(263, 264) AND x.deleted_flag = '0';
7582 BEGIN
7583 x_models_tbl.DELETE;
7584 v_count := 0;
7585
7586 OPEN models_cur(p_model_id);
7587
7588 LOOP
7589 FETCH models_cur
7590 INTO v_component_id;
7591
7592 EXIT WHEN models_cur%NOTFOUND;
7593 v_count := v_count + 1;
7594 x_models_tbl(v_count) := v_component_id;
7595 END LOOP;
7596
7597 CLOSE models_cur;
7598
7599 v_count := v_count + 1;
7600 x_models_tbl(v_count) := p_model_id;
7601 EXCEPTION
7602 WHEN OTHERS
7603 THEN
7604 RAISE;
7605 END get_source_models;
7606
7607 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7608 --------procedure that checks if logic has changed since the model was last published
7609 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)
7610 AS
7611 v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
7612 v_expr_node_date cz_ui_nodes.last_update_date%TYPE;
7613 BEGIN
7614 IF (p_model_array.COUNT > 0)
7615 THEN
7616 FOR i IN p_model_array.FIRST .. p_model_array.LAST
7617 LOOP
7618 get_max_expr_date(p_model_array(i), v_expr_node_date);
7619
7620 IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_expr_node_date))
7621 THEN
7622 x_record_count := refresh_rules_count;
7623 EXIT;
7624 END IF;
7625
7626 BEGIN
7627 SELECT last_logic_update
7628 INTO v_last_logic_update
7629 FROM cz_devl_projects
7630 WHERE cz_devl_projects.devl_project_id = p_model_array(i) AND cz_devl_projects.deleted_flag = '0';
7631 EXCEPTION
7632 WHEN OTHERS
7633 THEN
7634 v_last_logic_update := NULL;
7635 END;
7636
7637 IF ((v_last_logic_update IS NOT NULL) AND(p_last_xfr_date < v_last_logic_update))
7638 THEN
7639 x_record_count := refresh_rules_count;
7640 EXIT;
7641 END IF;
7642 END LOOP;
7643 END IF;
7644 EXCEPTION
7645 WHEN OTHERS
7646 THEN
7647 RAISE;
7648 END chk_if_logic_changed;
7649
7650 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7654 v_last_archive_update cz_archives.last_update_date%TYPE;
7651 --------procedure that checks if archives have changed since the model was last published
7652 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)
7653 AS
7655 BEGIN
7656 IF (p_model_array.COUNT > 0)
7657 THEN
7658 FOR i IN p_model_array.FIRST .. p_model_array.LAST
7659 LOOP
7660 BEGIN
7661 SELECT GREATEST(MAX(arch.last_update_date), MAX(refs.last_update_date))
7662 INTO v_last_archive_update
7663 FROM cz_archives arch, cz_archive_refs refs
7664 WHERE refs.devl_project_id = p_model_array(i) AND arch.archive_id = refs.archive_id AND arch.deleted_flag = '0'
7665 AND refs.deleted_flag = 0;
7666 EXCEPTION
7667 WHEN NO_DATA_FOUND
7668 THEN
7669 v_last_archive_update := NULL;
7670 END;
7671
7672 IF ((v_last_archive_update IS NOT NULL) AND(p_last_xfr_date < v_last_archive_update))
7673 THEN
7674 x_record_count := refresh_rules_count;
7675 EXIT;
7676 END IF;
7677 END LOOP;
7678 END IF;
7679 EXCEPTION
7680 WHEN OTHERS
7681 THEN
7682 RAISE;
7683 END chk_if_archives_changed;
7684
7685 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7686 -------procedure checks if model structure has changed since it was last published
7687 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)
7688 AS
7689 v_last_logic_update cz_devl_projects.last_logic_update%TYPE;
7690 v_last_struct_date cz_devl_projects.last_struct_update%TYPE;
7691 BEGIN
7692 IF (p_model_array.COUNT > 0)
7693 THEN
7694 FOR i IN p_model_array.FIRST .. p_model_array.LAST
7695 LOOP
7696 get_last_struct_date(p_model_array(i), v_last_struct_date);
7697
7698 IF ((p_last_xfr_date IS NOT NULL) AND(p_last_xfr_date < v_last_struct_date))
7699 THEN
7700 x_record_count := -777;
7701 EXIT;
7702 END IF;
7703 END LOOP;
7704 END IF;
7705 EXCEPTION
7706 WHEN OTHERS
7707 THEN
7708 RAISE;
7709 END;
7710
7711 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7712 ----get last update date for FC
7713 PROCEDURE get_fc_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
7714 AS
7715 v_update_date cz_func_comp_specs.last_update_date%TYPE;
7716 BEGIN
7717 IF (p_model_array.COUNT > 0)
7718 THEN
7719 x_max_update_date := cz_utils.epoch_begin;
7720
7721 FOR i IN p_model_array.FIRST .. p_model_array.LAST
7722 LOOP
7723 BEGIN
7724 SELECT MAX(last_update_date)
7725 INTO v_update_date
7726 FROM cz_func_comp_specs
7727 WHERE cz_func_comp_specs.devl_project_id = p_model_array(i) AND cz_func_comp_specs.deleted_flag = record_not_deleted;
7728 EXCEPTION
7729 WHEN OTHERS
7730 THEN
7731 v_update_date := NULL;
7732 END;
7733
7734 IF (v_update_date IS NOT NULL)
7735 THEN
7736 IF (v_update_date > x_max_update_date)
7737 THEN
7738 x_max_update_date := v_update_date;
7739 END IF;
7740 END IF;
7741 END LOOP;
7742 END IF;
7743 END get_fc_date;
7744
7745 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7746 ------procedure that retrieves the max last update date
7747 ------for ps nodes on the model
7748 PROCEDURE get_psnode_last_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE) AS
7749 BEGIN
7750 SELECT MAX(last_update_date)
7751 INTO x_last_update_date
7752 FROM cz_ps_nodes
7753 WHERE devl_project_id = p_model_id;
7754 EXCEPTION
7755 WHEN OTHERS THEN
7756 x_last_update_date := cz_utils.epoch_begin;
7757 END;
7758
7759 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7760 ------procedure that retrieves the max last update date
7761 ------for the description on the model
7762 PROCEDURE get_intl_text_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
7763 AS
7764 BEGIN
7765 SELECT MAX(last_update_date)
7766 INTO x_last_update_date
7767 FROM cz_localized_texts
7768 WHERE model_id = p_model_id;
7769 EXCEPTION
7770 WHEN OTHERS
7771 THEN
7772 x_last_update_date := cz_utils.epoch_begin;
7773 END;
7774
7775 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7776 PROCEDURE get_max_template_date(p_template_id IN NUMBER, x_max_date OUT NOCOPY DATE)
7777 IS
7778 BEGIN
7779 SELECT last_update_date
7780 INTO x_max_date
7781 FROM cz_ui_templates
7782 WHERE cz_ui_templates.template_id = p_template_id AND cz_ui_templates.deleted_flag = record_not_deleted;
7783 EXCEPTION
7784 WHEN OTHERS
7785 THEN
7786 x_max_date := cz_utils.epoch_begin;
7787 END get_max_template_date;
7788
7789 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7793 l_prev_date DATE := cz_utils.epoch_begin;
7790 PROCEDURE get_template_date(p_global_templs_ref IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
7791 IS
7792 l_last_update_date DATE;
7794 BEGIN
7795 x_max_update_date := cz_utils.epoch_begin;
7796
7797 IF (p_global_templs_ref.COUNT > 0)
7798 THEN
7799 FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
7800 LOOP
7801 SELECT last_update_date
7802 INTO l_last_update_date
7803 FROM cz_ui_templates
7804 WHERE cz_ui_templates.template_id = p_global_templs_ref(i)
7805 AND cz_ui_templates.deleted_flag = record_not_deleted
7806 AND cz_ui_templates.ui_def_id = 0;
7807
7808 IF (l_last_update_date > l_prev_date)
7809 THEN
7810 x_max_update_date := l_last_update_date;
7811 END IF;
7812
7813 l_prev_date := x_max_update_date;
7814 END LOOP;
7815 END IF;
7816 EXCEPTION
7817 WHEN NO_DATA_FOUND
7818 THEN
7819 x_max_update_date := cz_utils.epoch_begin;
7820 END get_template_date;
7821
7822 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7823 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)
7824 IS
7825 l_last_update_date DATE;
7826 l_prev_date DATE := cz_utils.epoch_begin;
7827 rec_count NUMBER := 0;
7828 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
7829 BEGIN
7830 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
7831 THEN
7832 l_pub_mode := cz_model_migration_pvt.mode_migration;
7833 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
7834 THEN
7835 l_pub_mode := cz_model_migration_pvt.mode_copy;
7836 END IF;
7837
7838 x_last_xfr_activity := cz_utils.epoch_begin;
7839
7840 IF (p_global_templs_ref.COUNT > 0)
7841 THEN
7842 FOR i IN p_global_templs_ref.FIRST .. p_global_templs_ref.LAST
7843 LOOP
7844 BEGIN
7845 SELECT MAX(published)
7846 INTO l_last_update_date
7847 FROM cz_model_publications
7848 WHERE cz_model_publications.object_id = p_global_templs_ref(i)
7849 AND cz_model_publications.deleted_flag = record_not_deleted
7850 AND cz_model_publications.object_type = template_publication
7851 AND cz_model_publications.publication_mode = l_pub_mode;
7852 EXCEPTION
7853 WHEN NO_DATA_FOUND
7854 THEN
7855 NULL;
7856 END;
7857
7858 IF (l_last_update_date >= l_prev_date)
7859 THEN
7860 x_last_xfr_activity := l_last_update_date;
7861 END IF;
7862 END LOOP;
7863 END IF;
7864 EXCEPTION
7865 WHEN OTHERS
7866 THEN
7867 x_last_xfr_activity := cz_utils.epoch_begin;
7868 END get_last_templ_activity;
7869
7870 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7871 PROCEDURE get_effectivity_set_date(p_model_id IN NUMBER, x_last_update_date OUT NOCOPY DATE)
7872 IS
7873 BEGIN
7874 SELECT MAX(last_update_date)
7875 INTO x_last_update_date
7876 FROM cz_effectivity_sets
7877 WHERE cz_effectivity_sets.effectivity_set_id IN(
7878 SELECT DISTINCT effectivity_set_id
7879 FROM cz_ps_nodes
7880 WHERE cz_ps_nodes.devl_project_id = p_model_id
7881 AND cz_ps_nodes.deleted_flag = record_not_deleted
7882 AND cz_ps_nodes.effectivity_set_id IS NOT NULL);
7883 EXCEPTION
7884 WHEN NO_DATA_FOUND
7885 THEN
7886 x_last_update_date := cz_utils.epoch_begin;
7887 END get_effectivity_set_date;
7888
7889 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7890 ------get last update date for effectivity
7891 PROCEDURE get_eff_date(p_model_array IN cz_pb_mgr.t_ref, x_max_update_date IN OUT NOCOPY DATE)
7892 AS
7893 v_update_date cz_effectivity_sets.last_update_date%TYPE;
7894 BEGIN
7895 IF (p_model_array.COUNT > 0)
7896 THEN
7897 x_max_update_date := cz_utils.epoch_begin;
7898
7899 FOR i IN p_model_array.FIRST .. p_model_array.LAST
7900 LOOP
7901 get_effectivity_set_date(p_model_array(i), v_update_date);
7902
7903 IF (v_update_date > x_max_update_date)
7904 THEN
7905 x_max_update_date := v_update_date;
7906 END IF;
7907 END LOOP;
7908 END IF;
7909 END get_eff_date;
7910
7911 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
7912 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)
7913 IS
7914 l_ui_actns_ui_act_id_tbl cz_pb_mgr.t_ref;
7915 l_ui_actns_ui_act_new_id_tbl cz_pb_mgr.t_ref;
7916 l_ui_actns_ui_uidef_tbl cz_pb_mgr.t_ref;
7917 l_ui_actns_ui_tgtui_tbl cz_pb_mgr.t_ref;
7918 l_ui_actns_tgtexpl_tbl cz_pb_mgr.t_ref;
7919 l_ui_actns_ctx_comp_tbl cz_pb_mgr.t_ref;
7920 l_ui_actns_ren_cond_tbl cz_pb_mgr.t_ref;
7921 l_prcpg_templ_tbl cz_pb_mgr.t_ref;
7922 l_prcpg_tmpui_tbl cz_pb_mgr.t_ref;
7923 l_prc_caption_tbl cz_pb_mgr.t_ref;
7924 l_pg_title_tbl cz_pb_mgr.t_ref;
7928 rec_count NUMBER;
7925 l_main_msg_tbl cz_pb_mgr.t_ref;
7926 l_text_tbl t_ref;
7927 l_text_count PLS_INTEGER := 0;
7929 BEGIN
7930 IF (p_elem_id_tbl.COUNT > 0) THEN
7931 rec_count := cz_pb_mgr.g_ui_actns_ui_act_id_ref.COUNT;
7932
7933 FOR i IN p_elem_id_tbl.FIRST .. p_elem_id_tbl.LAST
7934 LOOP
7935 l_ui_actns_ui_act_id_tbl.DELETE;
7936 l_ui_actns_ui_uidef_tbl.DELETE;
7937 l_ui_actns_ui_tgtui_tbl.DELETE;
7938 l_ui_actns_tgtexpl_tbl.DELETE;
7939 l_ui_actns_ctx_comp_tbl.DELETE;
7940 l_ui_actns_ren_cond_tbl.DELETE;
7941 l_prcpg_templ_tbl.DELETE;
7942 l_prcpg_tmpui_tbl.DELETE;
7943 l_prc_caption_tbl.DELETE;
7944 l_pg_title_tbl.DELETE;
7945 l_main_msg_tbl.DELETE;
7946
7947 IF (p_elem_type_ref(i) = 552) THEN
7948 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_actions_seq
7949 , 'cz_ui_actions_s.nextval' || cz_pb_mgr.v_db_link
7950 ,cz_pb_mgr.v_oraclesequenceincr
7951 )
7952 ,ui_action_id, ui_def_id, target_ui_def_id, target_expl_node_id, context_component_id
7953 ,render_condition_id, PROCESSING_PAGE_TEMPL_ID, PROC_PAGE_TEMPL_UI_DEF_ID
7954 ,PROCESSING_CAPTION_TEXT_ID, PAGE_TITLE_TEXT_ID, MAIN_MESSAGE_TEXT_ID
7955 BULK COLLECT INTO l_ui_actns_ui_act_new_id_tbl
7956 ,l_ui_actns_ui_act_id_tbl, l_ui_actns_ui_uidef_tbl, l_ui_actns_ui_tgtui_tbl
7957 ,l_ui_actns_tgtexpl_tbl, l_ui_actns_ctx_comp_tbl, l_ui_actns_ren_cond_tbl
7958 ,l_prcpg_templ_tbl,l_prcpg_tmpui_tbl,l_prc_caption_tbl,l_pg_title_tbl,l_main_msg_tbl
7959 FROM cz_ui_actions
7960 WHERE cz_ui_actions.ui_action_id = p_elem_id_tbl(i)
7961 AND cz_ui_actions.ui_def_id = 0
7962 AND cz_ui_actions.deleted_flag = record_not_deleted
7963 AND cz_ui_actions.seeded_flag <> seed_data;
7964 END IF;
7965
7966 IF (l_ui_actns_ui_act_id_tbl.COUNT > 0) THEN
7967 FOR j IN l_ui_actns_ui_act_id_tbl.FIRST .. l_ui_actns_ui_act_id_tbl.LAST
7968 LOOP
7969 rec_count := rec_count + 1;
7970
7971 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0) THEN
7972 cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_new_id_tbl(j);
7973 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);
7974 ELSE
7975 cz_pb_mgr.g_ui_actns_ui_act_id_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
7976 END IF;
7977
7978 cz_pb_mgr.g_ui_actns_ui_act_id_old_ref(rec_count) := l_ui_actns_ui_act_id_tbl(j);
7979 cz_pb_mgr.g_ui_actns_ui_tgtui_ref(rec_count) := l_ui_actns_ui_tgtui_tbl(j);
7980 cz_pb_mgr.g_ui_actns_ui_uidef_old_ref(rec_count) := l_ui_actns_ui_uidef_tbl(j);
7981 cz_pb_mgr.g_ui_actns_tgtexpl_ref(rec_count) := l_ui_actns_tgtexpl_tbl(j);
7982 cz_pb_mgr.g_ui_actns_ctx_comp_tbl(rec_count) := l_ui_actns_ctx_comp_tbl(j);
7983 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
7984 cz_pb_mgr.g_uiact_prcpg_templ_tbl(rec_count) := l_prcpg_templ_tbl(j);
7985 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl(rec_count) := l_prcpg_tmpui_tbl(j);
7986 cz_pb_mgr.g_uiact_prc_caption_tbl(rec_count) := l_prc_caption_tbl(j);
7987 cz_pb_mgr.g_uiact_pg_title_tbl(rec_count) := l_pg_title_tbl(j);
7988 cz_pb_mgr.g_uiact_main_msg_tbl(rec_count) := l_main_msg_tbl(j);
7989
7990 -- no template element records for page title text, main msg, prc caption text
7991 -- so we need to collect them here
7992 IF l_prc_caption_tbl(j) IS NOT NULL THEN
7993 l_text_count := l_text_count + 1;
7994 l_text_tbl(l_text_count) := l_prc_caption_tbl(j);
7995 END IF;
7996 IF l_pg_title_tbl(j) IS NOT NULL THEN
7997 l_text_count := l_text_count + 1;
7998 l_text_tbl(l_text_count) := l_pg_title_tbl(j);
7999 END IF;
8000 IF l_main_msg_tbl(j) IS NOT NULL THEN
8001 l_text_count := l_text_count + 1;
8002 l_text_tbl(l_text_count) := l_main_msg_tbl(j);
8003 END IF;
8004 END LOOP;
8005
8006 IF l_text_count > 0 THEN
8007 insert_intl_texts(l_text_tbl, 'global texts from ui actions', TRUE);
8008 END IF;
8009
8010 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
8011
8012 --The resolution moved here from insert_template_elements.
8013 BEGIN
8014 p_elem_id_tbl(i) := cz_pb_mgr.g_ui_actions_id_idx_ref(p_elem_id_tbl(i));
8015 EXCEPTION
8016 WHEN OTHERS THEN
8017 cz_pb_mgr.v_err_message := 'Error during resolution of ui_action id = ' || p_elem_id_tbl(i) || ': ' || SQLERRM;
8018 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8019 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8020 RAISE;
8021 END;
8022 END IF;
8026 EXCEPTION
8023 END IF;
8024 END LOOP;
8025 END IF;
8027 WHEN NO_DATA_FOUND THEN
8028 NULL;
8029 WHEN OTHERS THEN
8030 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_actions', 'SQLERRM', SQLERRM);
8031 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIACTIONS', SQLCODE);
8032 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8033 RAISE;
8034 END collect_global_actions;
8035 --------------------------------
8036 PROCEDURE collect_global_texts(
8037 p_template_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8038 ,p_element_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
8039 ,x_status_code IN OUT NOCOPY VARCHAR2
8040 )
8041 IS
8042 l_elem_text_tbl cz_pb_mgr.t_ref;
8043 rec_count NUMBER := 0;
8044 BEGIN
8045 IF (p_template_id_ref.COUNT > 0)
8046 THEN
8047 FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8048 LOOP
8049 IF (p_element_type_ref(i) = 8)
8050 THEN
8051 rec_count := l_elem_text_tbl.COUNT + 1;
8052 l_elem_text_tbl(rec_count) := p_template_id_ref(i);
8053 END IF;
8054 END LOOP;
8055
8056 insert_intl_texts(l_elem_text_tbl, 'global texts', TRUE);
8057
8058 FOR i IN p_template_id_ref.FIRST .. p_template_id_ref.LAST
8059 LOOP
8060 IF (p_element_type_ref(i) = 8)
8061 THEN
8062 p_template_id_ref(i) := cz_pb_mgr.v_cz_intl_text_idx_ref(p_template_id_ref(i));
8063 END IF;
8064 END LOOP;
8065 END IF;
8066 EXCEPTION
8067 WHEN OTHERS
8068 THEN
8069 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_COLLECT_GL_TEXTS', 'SQLERRM', SQLERRM);
8070 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_GLTEXTS', SQLCODE);
8071 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8072 RAISE;
8073 END collect_global_texts;
8074
8075 ---------------------------------------------------------------
8076 PROCEDURE collect_global_rules(
8077 p_rule_id_array IN OUT NOCOPY cz_pb_mgr.t_ref
8078 ,p_rule_type_array IN OUT NOCOPY cz_pb_mgr.t_ref
8079 ,x_status IN OUT NOCOPY VARCHAR2
8080 )
8081 AS
8082 l_new_rule_id NUMBER;
8083 l_old_rule_id NUMBER;
8084 v_cz_rules_rf_id NUMBER;
8085 v_cz_rules_proj_id NUMBER;
8086 v_cz_rules_comp_id NUMBER;
8087 v_cz_rules_rea_id NUMBER;
8088 v_cz_rules_eff_id NUMBER;
8089 v_cz_rules_unmsg_id NUMBER;
8090 v_cz_rules_expl_id NUMBER;
8091 v_cz_rules_sig NUMBER;
8092 v_cz_rules_ui NUMBER;
8093 v_cz_eff_usage_mask cz_rules.effective_usage_mask%TYPE;
8094
8095 rec_count NUMBER;
8096 BEGIN
8097 IF (x_status = PUBLICATION_ERROR OR p_rule_id_array.COUNT = 0) THEN
8098 RETURN;
8099 END IF;
8100
8101 rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT;
8102
8103 FOR i IN p_rule_id_array.FIRST .. p_rule_id_array.LAST
8104 LOOP
8105 IF (p_rule_type_array(i) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)) THEN
8106 BEGIN
8107 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
8108 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link
8109 ,cz_pb_mgr.v_oraclesequenceincr
8110 )
8111 ,rule_id, rule_folder_id, devl_project_id, component_id
8112 ,reason_id, unsatisfied_msg_id, effectivity_set_id
8113 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
8114 INTO l_new_rule_id
8115 ,l_old_rule_id, v_cz_rules_rf_id, v_cz_rules_proj_id, v_cz_rules_comp_id
8116 ,v_cz_rules_rea_id, v_cz_rules_unmsg_id, v_cz_rules_eff_id
8117 ,v_cz_rules_expl_id, v_cz_rules_sig, v_cz_rules_ui, v_cz_eff_usage_mask
8118 FROM cz_rules
8119 WHERE rule_id = p_rule_id_array(i) AND deleted_flag = '0' AND seeded_flag = '0';
8120
8121 rec_count := rec_count + 1;
8122 cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_old_rule_id):=l_new_rule_id;
8123 cz_pb_mgr.v_cz_rules_rule_id_new_ref(rec_count) := l_new_rule_id;
8124 cz_pb_mgr.v_cz_rules_rule_id_old_ref(rec_count) := l_old_rule_id;
8125 cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := v_cz_rules_proj_id;
8126 cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := v_cz_rules_comp_id;
8127 cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
8128 cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := v_cz_rules_expl_id;
8129 cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := v_cz_rules_rea_id;
8130 cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := v_cz_rules_unmsg_id;
8131 cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := v_cz_rules_eff_id;
8132 cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := v_cz_rules_sig;
8133 cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
8134 cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := v_cz_rules_ui;
8135 cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_cz_eff_usage_mask;
8136 cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_new_rule_id;
8137
8138 EXCEPTION
8139 WHEN NO_DATA_FOUND THEN
8140 cz_pb_mgr.v_err_message := 'No rules found: ' || p_rule_id_array(i);
8141 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
8142 END;
8143
8144 BEGIN
8145 p_rule_id_array(i) := cz_pb_mgr.v_cz_rules_rule_id_idx_ref(p_rule_id_array(i));
8146 EXCEPTION
8150 END IF;
8147 WHEN OTHERS THEN
8148 NULL;
8149 END;
8151 END LOOP;
8152 EXCEPTION
8153 WHEN OTHERS THEN
8154 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
8155 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
8156 x_status := PUBLICATION_ERROR;
8157 RAISE;
8158 END collect_global_rules;
8159
8160 ------------------------------------------------
8161 PROCEDURE collect_template_elements(p_template_ref IN cz_pb_mgr.t_ref)
8162 IS
8163 l_template_id_tbl cz_pb_mgr.t_ref;
8164 l_ui_def_id_tbl cz_pb_mgr.t_ref;
8165 l_element_type_tbl cz_pb_mgr.t_ref;
8166 l_element_id_tbl cz_pb_mgr.t_ref;
8167 l_pers_elem_tbl cz_pb_mgr.t_ref;
8168 l_src_pb_id NUMBER;
8169 l_tgt_pb_id NUMBER;
8170 rec_count NUMBER := 0;
8171 BEGIN
8172 l_template_id_ref.DELETE;
8173 l_ui_def_id_ref.DELETE;
8174 l_element_type_ref.DELETE;
8175 l_element_id_ref.DELETE;
8176 l_pers_elem_ref.DELETE;
8177 cz_pb_mgr.l_template_id_ref.DELETE;
8178 cz_pb_mgr.l_ui_def_id_ref.DELETE;
8179 cz_pb_mgr.l_element_type_ref.DELETE;
8180 cz_pb_mgr.l_element_id_ref.DELETE;
8181 cz_pb_mgr.l_pers_elem_ref.DELETE;
8182 cz_pb_mgr.g_ui_actns_ui_act_id_ref.DELETE;
8183 cz_pb_mgr.g_ui_actns_ui_uidef_ref.DELETE;
8184 cz_pb_mgr.g_ui_actns_ui_tgtui_ref.DELETE;
8185 cz_pb_mgr.g_ui_actns_tgtexpl_ref.DELETE;
8186 cz_pb_mgr.g_ui_actns_ctx_comp_tbl.DELETE;
8187 cz_pb_mgr.g_ui_actns_ren_cond_tbl.DELETE;
8188 cz_pb_mgr.g_uiact_prcpg_templ_tbl.DELETE;
8189 cz_pb_mgr.g_uiact_prcpg_tmpui_tbl.DELETE;
8190 cz_pb_mgr.g_uiact_prc_caption_tbl.DELETE;
8191 cz_pb_mgr.g_uiact_pg_title_tbl.DELETE;
8192 cz_pb_mgr.g_uiact_main_msg_tbl.DELETE;
8193
8194 IF (p_template_ref.COUNT > 0)
8195 THEN
8196 FOR i IN p_template_ref.FIRST .. p_template_ref.LAST
8197 LOOP
8198 l_template_id_tbl.DELETE;
8199 l_ui_def_id_tbl.DELETE;
8200 l_element_type_tbl.DELETE;
8201 l_element_id_tbl.DELETE;
8202 l_pers_elem_tbl.DELETE;
8203
8204 SELECT template_id, ui_def_id, element_type, element_id, persistent_element_id
8205 BULK COLLECT INTO l_template_id_tbl, l_ui_def_id_tbl, l_element_type_tbl, l_element_id_tbl, l_pers_elem_tbl
8206 FROM cz_ui_template_elements
8207 WHERE cz_ui_template_elements.template_id = p_template_ref(i)
8208 AND cz_ui_template_elements.ui_def_id = 0
8209 AND cz_ui_template_elements.deleted_flag = '0'
8210 AND cz_ui_template_elements.seeded_flag <> seed_data;
8211
8212 IF (l_template_id_tbl.COUNT > 0)
8213 THEN
8214 rec_count := cz_pb_mgr.l_template_id_ref.COUNT;
8215
8216 FOR j IN l_template_id_tbl.FIRST .. l_template_id_tbl.LAST
8217 LOOP
8218 rec_count := rec_count + 1;
8219 cz_pb_mgr.l_template_id_ref(rec_count) := l_template_id_tbl(j);
8220 cz_pb_mgr.l_ui_def_id_ref(rec_count) := l_ui_def_id_tbl(j);
8221 cz_pb_mgr.l_element_type_ref(rec_count) := l_element_type_tbl(j);
8222 cz_pb_mgr.l_element_id_ref(rec_count) := l_element_id_tbl(j);
8223 cz_pb_mgr.l_pers_elem_ref(rec_count) := l_pers_elem_tbl(j);
8224 END LOOP;
8225 END IF;
8226 END LOOP;
8227
8228 IF (l_template_id_ref.COUNT > 0)
8229 THEN
8230 collect_global_actions(cz_pb_mgr.l_element_id_ref, l_element_type_ref);
8231 collect_global_rules(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8232 collect_global_texts(cz_pb_mgr.l_element_id_ref, l_element_type_ref, cz_pb_mgr.v_status_code);
8233 resolve_ids(cz_pb_mgr.l_template_id_ref, cz_pb_mgr.g_ui_templates_idx_temp_ref, 'template ids of template elements');
8234 END IF;
8235 END IF;
8236 EXCEPTION
8237 WHEN NO_DATA_FOUND
8238 THEN
8239 NULL;
8240 WHEN OTHERS
8241 THEN
8242 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_template_elements', 'SQLERRM', SQLERRM);
8243 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_TMPLELEM', SQLCODE);
8244 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8245 RAISE;
8246 END collect_template_elements;
8247
8248 --------------------------------------------------------------------------------
8249 FUNCTION get_target_template(p_src_template_id IN NUMBER) RETURN NUMBER
8250 IS
8251 l_template_id NUMBER := -1;
8252 l_ref_cursor ref_cursor;
8253 BEGIN
8254 -- using binding vars
8255 -- check existing in ui template table (esp for mig)?
8256 OPEN l_ref_cursor FOR 'SELECT object_id'
8257 || ' FROM cz_model_publications'
8258 || cz_pb_mgr.v_db_link
8259 || ' t'
8260 || ' WHERE t.source_model_id = '
8261 || p_src_template_id
8262 || ' AND t.object_type = ''UIT'' AND t.deleted_flag=0'
8263 || ' AND t.source_target_flag = '''
8264 || g_target_flag
8265 || '''';
8266
8267 LOOP
8268 FETCH l_ref_cursor INTO l_template_id;
8269 EXIT WHEN l_ref_cursor%NOTFOUND;
8270 END LOOP;
8271
8272 CLOSE l_ref_cursor;
8273
8277 --returns the template at target server if it ever got published
8274 RETURN l_template_id;
8275 END get_target_template;
8276
8278 --(populates cz_pb_mgr.g_ui_templates_new_temp_id_ref)
8279 -- or generates a new id for the target.
8280
8281 FUNCTION get_new_template(p_template_id IN NUMBER)
8282 RETURN NUMBER
8283 IS
8284 l_template_id NUMBER;
8285 BEGIN
8286 l_template_id := get_target_template(p_template_id);
8287 IF (l_template_id = -1) THEN
8288 l_template_id := cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates,
8289 'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr);
8290 END IF;
8291
8292 RETURN l_template_id;
8293 EXCEPTION
8294 WHEN OTHERS THEN
8295 RAISE;
8296 END get_new_template;
8297
8298 --------------------------------------------------------------------------
8299 -- returns 0 when a template is either never published
8300 -- or is modified after last publication else returns 1.
8301 PROCEDURE has_uit_changed(p_template_id IN NUMBER, p_server_id IN NUMBER, x_status IN OUT NOCOPY NUMBER)
8302 IS
8303 l_uit_update_date DATE;
8304 l_last_update_date DATE;
8305 l_template_id NUMBER;
8306 BEGIN
8307 x_status := 0;
8308
8309 SELECT last_update_date
8310 INTO l_last_update_date
8311 FROM cz_model_publications
8312 WHERE cz_model_publications.object_id = p_template_id
8313 AND cz_model_publications.object_type = 'UIT'
8314 AND cz_model_publications.source_target_flag = g_source_flag
8315 AND cz_model_publications.server_id = p_server_id
8316 AND cz_model_publications.export_status IN('OK', 'PUP')
8317 AND cz_model_publications.deleted_flag = '0';
8318
8319 SELECT last_update_date
8320 INTO l_uit_update_date
8321 FROM cz_ui_templates
8322 WHERE ui_def_id = 0 AND template_id = p_template_id AND deleted_flag = '0';
8323
8324 -- if template changed since last publication
8325 IF (l_uit_update_date > l_last_update_date) THEN
8326 x_status := 0;
8327 ELSE
8328 -- get the target tempalte id for the last publication and
8329 -- add it to the index, such that its not processed further.
8330 l_template_id := get_target_template(p_template_id);
8331 IF l_template_id = -1 THEN
8332 x_status := 0;
8333 ELSE
8334 cz_pb_mgr.g_ui_templates_idx_temp_ref(p_template_id):=l_template_id;
8335 x_status := 1;
8336 END IF;
8337 END IF;
8338 -- if template never got published
8339 EXCEPTION
8340 WHEN NO_DATA_FOUND THEN
8341 x_status := 0;
8342 END has_uit_changed;
8343 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8344 PROCEDURE get_oa_tmpls
8345 IS
8346 l_new_tmpl_tbl cz_pb_mgr.t_ref; -- new or changed templs
8347 l_old_tmpl_tbl cz_pb_mgr.t_ref; -- exported already, no change
8348 l_all_tmpl_map cz_pb_mgr.t_ref_idx_vc2;
8349 l_temp_tbl cz_pb_mgr.t_ref;
8350 l_rec_count PLS_INTEGER;
8351 l_template_id NUMBER;
8352 l_jrad_doc VARCHAR2(255); -- cz_ui_templates.jrad_doc%TYPE;
8353
8354 -- used for synch operation and insert operation resp
8355 l_parent_container_type NUMBER;
8356 l_root_element_signature_id NUMBER;
8357 l_template_name VARCHAR2(255); -- cz_ui_templates.TEMPLATE_NAME%TYPE;
8358 l_root_region_type VARCHAR2(255); -- cz_ui_templates.ROOT_REGION_TYPE%TYPE;
8359
8360 remote_uct ref_cursor;
8361
8362 document_synch EXCEPTION;
8363
8364 -- check if templates published previously or if changed since publication
8365 -- add to the new tbl if never published or exported before but changed after publication
8366 -- put to the old tbl, and put src:tgt ids into g_ui_templates_idx_temp_ref map otherwise
8367 -- may be better to separate the new ones with the changed and then just use the
8368 -- new ones for insert proc while the changed for updating?
8369 PROCEDURE check_template_status(p_tmpl_tbl IN t_ref)
8370 IS
8371 l_status INTEGER;
8372 l_old_count PLS_INTEGER;
8373 l_new_count PLS_INTEGER;
8374 BEGIN
8375 IF p_tmpl_tbl.COUNT > 0 THEN
8376 l_old_count := l_old_tmpl_tbl.COUNT;
8377 l_new_count := l_new_tmpl_tbl.COUNT;
8378 FOR i IN p_tmpl_tbl.FIRST .. p_tmpl_tbl.LAST LOOP
8379 IF NOT l_all_tmpl_map.EXISTS(p_tmpl_tbl(i)) THEN
8380 l_status := 0;
8381 has_uit_changed(p_tmpl_tbl(i), cz_pb_mgr.v_server_id, l_status);
8382 IF l_status = 0 THEN -- not pub'd or chg'd since pub
8383 l_new_count := l_new_count + 1;
8384 l_new_tmpl_tbl(l_new_count) := p_tmpl_tbl(i);
8385 ELSE
8386 l_old_count := l_old_count + 1;
8387 l_old_tmpl_tbl(l_old_count) := p_tmpl_tbl(i);
8388 END IF;
8389
8390 l_all_tmpl_map(p_tmpl_tbl(i)) := NULL;
8391 END IF;
8392 END LOOP;
8393 END IF;
8394 END check_template_status;
8395
8396 BEGIN
8397 --For model migration, the rules related tables will be loaded in bulk_collect_rules
8398 --and they should not be cleared here. Rules related tables are collected in 'collect_global_rules',
8399 --which is called from here.
8400 --For publishing, this code gets executed right in the beginning(when all the tables are empty
8401 --anyway), and seems redundant. But for the risk of introducing regressions, we
8402 --will execute this only for publishing.
8406
8403 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
8404 clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
8405 END IF;
8407 cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
8408 cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
8409 cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
8410 cz_pb_mgr.g_ui_templates_ui_def_old_ref.DELETE;
8411 cz_pb_mgr.g_ui_templates_ui_def_new_ref.DELETE;
8412 cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
8413 cz_pb_mgr.g_ui_templates_title_ref.DELETE;
8414 cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
8415 cz_pb_mgr.g_ui_templates_jrad_old_ref.DELETE;
8416 cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
8417 cz_pb_mgr.g_ui_templates_but_uidef_id.DELETE;
8418
8419 -- templates already exported and no change since, used only in replacing extends
8420 cz_pb_mgr.g_tmpl_jrad_old_tbl.DELETE;
8421 cz_pb_mgr.g_tmpl_jrad_new_tbl.DELETE;
8422
8423 cz_pb_mgr.g_ui_templates_obj_type.DELETE;
8424 cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
8425
8426 -- templs directly referred by the UIs: not published before or changed since publication
8427 IF cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 AND cz_pb_mgr.v_session_parameter <> model_copy THEN
8428 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST LOOP
8429 l_temp_tbl.DELETE;
8430 SELECT template_id BULK COLLECT INTO l_temp_tbl
8431 FROM cz_ui_collect_tmpls_v
8432 WHERE cz_ui_collect_tmpls_v.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
8433 AND cz_ui_collect_tmpls_v.template_id IN
8434 (SELECT template_id
8435 FROM cz_ui_templates
8436 WHERE cz_ui_templates.deleted_flag = '0' AND cz_ui_templates.seeded_flag = '0'
8437 AND cz_ui_templates.ui_def_id = 0);
8438
8439 check_template_status(l_temp_tbl);
8440 END LOOP;
8441 END IF;
8442
8443 -- append changed or not published ref templs to l_new_tmpl_tbl
8444 l_rec_count := l_new_tmpl_tbl.COUNT;
8445 IF l_rec_count > 0 THEN
8446 FOR i IN 1 .. l_rec_count LOOP
8447 l_temp_tbl.DELETE;
8448 SELECT ref_template_id BULK COLLECT INTO l_temp_tbl
8449 FROM cz_ui_ref_templates
8450 WHERE cz_ui_ref_templates.deleted_flag = '0'
8451 AND cz_ui_ref_templates.seeded_flag = '0'
8452 AND cz_ui_ref_templates.ref_template_id IN
8453 (SELECT template_id
8454 FROM cz_ui_templates t
8455 WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0)
8456 START WITH cz_ui_ref_templates.template_id = l_new_tmpl_tbl(i)
8457 CONNECT BY PRIOR ref_template_id = cz_ui_ref_templates.template_id
8458 AND PRIOR cz_ui_ref_templates.deleted_flag = '0';
8459
8460 check_template_status(l_temp_tbl);
8461 END LOOP;
8462 END IF;
8463
8464 -- add button bar templs (bbt) referred by the templates to the array
8465 -- assume bbts have no ref tmpl, otherwise we have an issue here
8466 l_rec_count := l_new_tmpl_tbl.COUNT;
8467 IF l_rec_count > 0 THEN
8468 FOR i IN 1 .. l_rec_count LOOP
8469 l_temp_tbl.DELETE;
8470 SELECT button_bar_template_id BULK COLLECT INTO l_temp_tbl
8471 FROM cz_ui_templates
8472 WHERE cz_ui_templates.deleted_flag = '0'
8473 AND cz_ui_templates.seeded_flag = '0'
8474 AND cz_ui_templates.ui_def_id = 0
8475 AND cz_ui_templates.button_bar_template_id IS NOT NULL
8476 AND cz_ui_templates.template_id = l_new_tmpl_tbl(i)
8477 AND cz_ui_templates.button_bar_template_id IN
8478 (SELECT template_id
8479 FROM cz_ui_templates t
8480 WHERE t.deleted_flag = '0' AND t.seeded_flag = '0' AND t.ui_def_id = 0);
8481
8482 check_template_status(l_temp_tbl);
8483 END LOOP;
8484 END IF;
8485
8486 -- processing page tmpls (ppt) referred by ui actions
8487 -- assume ppts have no ref tmpl, no further ppt ref from the action elements (if any) of the ppts
8488 l_rec_count := l_new_tmpl_tbl.COUNT;
8489 IF l_rec_count > 0 THEN
8490 FOR i IN 1 .. l_rec_count LOOP
8491 l_temp_tbl.DELETE;
8492 SELECT processing_page_templ_id BULK COLLECT INTO l_temp_tbl
8493 FROM cz_ui_actions act
8494 WHERE deleted_flag = '0' AND ui_def_id = 0 AND ui_action_id IN
8495 (SELECT element_id FROM cz_ui_template_elements
8496 WHERE deleted_flag = '0' AND element_type = 552
8497 AND template_id = l_new_tmpl_tbl(i)
8498 AND ui_def_id = 0 and seeded_flag = '0')
8499 AND EXISTS (SELECT NULL FROM cz_ui_templates
8500 WHERE deleted_flag = '0' AND ui_def_id = 0
8501 AND template_id = act.processing_page_templ_id AND seeded_flag = '0');
8502
8503 check_template_status(l_temp_tbl);
8504 END LOOP;
8505 END IF;
8506
8507 IF (l_new_tmpl_tbl.COUNT > 0) THEN
8508 l_rec_count := 0;
8509
8510 FOR i IN l_new_tmpl_tbl.FIRST .. l_new_tmpl_tbl.LAST LOOP
8511 FOR j IN (SELECT * FROM cz_ui_templates
8512 WHERE template_id = l_new_tmpl_tbl(i) AND ui_def_id = '0' AND deleted_flag = '0') LOOP
8513 IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model THEN
8514 -- The synch check will be performed here
8515 -- The template name will be checked over the link
8516 -- If the the template does not exists, then we will be using the new template that is created
8517 l_template_name := NULL;
8518 l_template_id := NULL;
8519 l_parent_container_type := NULL;
8520 l_root_region_type := NULL;
8521 l_root_element_signature_id := NULL;
8522
8526 || 'where t.ui_def_id = ''0'' and t.template_usage = ''0'' and '
8523 OPEN remote_uct FOR 'Select template_name,template_id,parent_container_type,root_region_type,'
8524 || 'root_element_signature_id from cz_ui_templates'
8525 || cz_pb_mgr.v_db_link || 't '
8527 || 't.deleted_flag = ''0'' and t.seeded_flag = ''0'' and '
8528 || 't.template_name = :1 and t.template_type = :2 and nvl(t.message_type,-1) = nvl(:3,-1)'
8529 USING j.template_name, j.template_type, j.message_type;
8530 FETCH remote_uct
8531 INTO l_template_name, l_template_id, l_parent_container_type,
8532 l_root_region_type, l_root_element_signature_id;
8533
8534 IF l_template_name IS NOT NULL AND
8535 ( l_parent_container_type <> j.parent_container_type
8536 OR l_root_region_type <> j.root_region_type
8537 OR l_root_element_signature_id <> j.root_element_signature_id ) THEN
8538 cz_pb_mgr.v_err_message := cz_utils.get_text('UCT synch error', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
8539 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
8540 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8541 RAISE document_synch;
8542 END IF;
8543 END IF;
8544
8545 -- pub: populate all the new or changed templs to the arrays
8546 -- mig: only add the new templs (l_template_name IS NULL) ??
8547 IF cz_pb_mgr.v_session_parameter = pub_model OR l_template_name IS NULL THEN
8548 l_rec_count := l_rec_count + 1;
8549 l_template_id := get_new_template(j.template_id);
8550 cz_pb_mgr.g_ui_templates_new_temp_id_ref(l_rec_count) := l_template_id;
8551 cz_pb_mgr.g_ui_templates_old_temp_id_ref(l_rec_count) := j.template_id;
8552 cz_pb_mgr.g_ui_templates_ui_def_old_ref(l_rec_count) := j.ui_def_id; -- '0'
8553 cz_pb_mgr.g_ui_templates_ui_def_new_ref(l_rec_count) := j.ui_def_id;
8554 cz_pb_mgr.g_ui_templates_msg_id_ref(l_rec_count) := j.main_message_id;
8555 cz_pb_mgr.g_ui_templates_title_ref(l_rec_count) := j.title_id;
8556 cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
8557 cz_pb_mgr.g_ui_templates_button_tbl(l_rec_count) := j.button_bar_template_id;
8558 cz_pb_mgr.g_ui_templates_but_uidef_id(l_rec_count) := j.button_bar_templ_uidef_id;
8559
8560 IF cz_pb_mgr.v_session_parameter = pub_model THEN
8561 cz_pb_mgr.g_ui_templates_jrad_new_ref(l_rec_count) := j.jrad_doc || '_p';
8562 ELSE
8563 cz_pb_mgr.g_ui_templates_obj_type(l_rec_count) := 'UCT';
8564 cz_pb_mgr.g_enclosing_fld_rp_entry(l_rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
8565 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));
8566 END IF;
8567 END IF;
8568
8569 -- fix for bug 7047145
8570 -- even if UI CT is already exists on target instance we need to replace
8571 -- old template_ids to new ones in XML attribute "extends"
8572 -- To do that g_ui_templates_jrad_old_ref/g_ui_templates_jrad_new_ref must be populated
8573 -- these two arrays are used in replace_extends()
8574 -- This part shoul be executed in the loop for already published/migrated templates
8575 -- but current code has a mny problems in this area ( checking for ui templates
8576 -- which need to be published/migrated
8577 IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND l_template_name IS NOT NULL THEN
8578 l_rec_count := l_rec_count + 1;
8579 cz_pb_mgr.g_ui_templates_jrad_old_ref(l_rec_count) := j.jrad_doc;
8580 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));
8581 END IF;
8582
8583 cz_pb_mgr.g_ui_templates_idx_temp_ref(j.template_id):=l_template_id;
8584 END LOOP;
8585 END LOOP;
8586
8587 collect_template_elements(cz_pb_mgr.g_ui_templates_old_temp_id_ref);
8588 END IF;
8589
8590 -- get jard_doc for the tmpls published before and not changed since for replacing extends
8591 IF l_old_tmpl_tbl.COUNT > 0 THEN
8592 l_rec_count := 0;
8593 FOR i IN l_old_tmpl_tbl.FIRST..l_old_tmpl_tbl.LAST LOOP
8594 SELECT jrad_doc INTO l_jrad_doc
8595 FROM cz_ui_templates
8596 WHERE template_id = l_old_tmpl_tbl(i) AND ui_def_id = 0 AND deleted_flag = '0';
8597
8598 l_rec_count := l_rec_count + 1;
8599 CZ_PB_MGR.g_tmpl_jrad_old_tbl(l_rec_count) := l_jrad_doc;
8600 IF cz_pb_mgr.v_session_parameter = pub_model THEN
8601 cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) := l_jrad_doc || '_p';
8602 ELSE
8603 cz_pb_mgr.g_tmpl_jrad_new_tbl(l_rec_count) :=
8604 REPLACE(l_jrad_doc, TO_CHAR(l_old_tmpl_tbl(i)),
8605 TO_CHAR(cz_pb_mgr.g_ui_templates_idx_temp_ref(l_old_tmpl_tbl(i))));
8606 END IF;
8607 END LOOP;
8608 END IF;
8609
8610 EXCEPTION
8611 WHEN OTHERS THEN
8612 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_templates', 'SQLERRM', SQLERRM);
8613 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_UIGLTEMPLATES', SQLCODE);
8614 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
8615 RAISE;
8616 END get_oa_tmpls;
8617
8618 ---------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8619 ------------procedure checks if the model has been changed since it was last published
8620 FUNCTION has_tobe_published(publicationid IN NUMBER)
8621 RETURN BOOLEAN
8622 IS
8626 v_last_update_date cz_ui_defs.last_update_date%TYPE;
8623 v_last_struct_update cz_devl_projects.last_struct_update%TYPE;
8624 v_models_tbl cz_pb_mgr.t_ref;
8625 record_count PLS_INTEGER := 0;
8627 v_fc_update_date cz_func_comp_specs.last_update_date%TYPE;
8628 v_eff_update_date DATE;
8629 v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
8630 l_max_template_date cz_pb_model_exports.last_xfr_activity%TYPE;
8631 l_capt_update_date DATE;
8632 l_ps_node_update_date DATE;
8633 v_descr_date DATE;
8634 BEGIN
8635 chk_if_aleady_published(publicationid, record_count);
8636 get_source_models(cz_pb_mgr.v_root_model_id, v_models_tbl);
8637 get_source_uis(cz_pb_mgr.v_root_model_id, v_models_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
8638 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);
8639 get_oa_tmpls;
8640
8641 IF (record_count > 0)
8642 THEN
8643 get_last_xfr_activity(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, v_last_xfr_activity);
8644
8645 IF (g_object_type = MODEL_PUBLICATION)
8646 THEN
8647 ----check if logic has changed
8648 chk_if_logic_changed(v_models_tbl, v_last_xfr_activity, record_count);
8649 ----check if ARCHIVES got reloaded/changed
8650 chk_if_archives_changed(v_models_tbl, v_last_xfr_activity, record_count);
8651 ----check if structure has changed
8652 chk_if_struct_changed(v_models_tbl, v_last_xfr_activity, record_count);
8653
8654 -----check if model descripton has changed
8655 IF (v_models_tbl.COUNT > 0)
8656 THEN
8657 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8658 LOOP
8659 get_intl_text_date(v_models_tbl(i), v_descr_date);
8660
8661 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_descr_date))
8662 THEN
8663 record_count := 0;
8664 EXIT;
8665 END IF;
8666 END LOOP;
8667 END IF;
8668
8669 ----check if fc has changed
8670 get_fc_date(v_models_tbl, v_fc_update_date);
8671
8672 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_fc_update_date))
8673 THEN
8674 record_count := 0;
8675 END IF;
8676
8677 -----check if eff has changed
8678 get_eff_date(v_models_tbl, v_eff_update_date);
8679
8680 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < v_eff_update_date))
8681 THEN
8682 record_count := 0;
8683 END IF;
8684
8685 ----check if ps node names has changed
8686 IF (v_models_tbl.COUNT > 0)
8687 THEN
8688 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8689 LOOP
8690 get_psnode_last_date(v_models_tbl(i), l_ps_node_update_date);
8691
8692 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_ps_node_update_date)) THEN
8693 record_count := 0;
8694 EXIT;
8695 END IF;
8696 END LOOP;
8697 END IF;
8698
8699 ----check if captions text has changed
8700 IF (v_models_tbl.COUNT > 0)
8701 THEN
8702 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8703 LOOP
8704 BEGIN
8705 SELECT MAX(last_update_date)
8706 INTO l_capt_update_date
8707 FROM cz_intl_texts
8708 WHERE model_id = v_models_tbl(i);
8709 EXCEPTION
8710 WHEN OTHERS
8711 THEN
8712 l_capt_update_date := cz_utils.epoch_begin;
8713 END;
8714
8715 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
8716 THEN
8717 record_count := 0;
8718 EXIT;
8719 END IF;
8720 END LOOP;
8721 END IF;
8722
8723 -----check if capt rules have changed
8724 IF (v_models_tbl.COUNT > 0)
8725 THEN
8726 l_capt_update_date := cz_utils.epoch_begin;
8727
8728 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
8729 LOOP
8730 BEGIN
8731 SELECT last_update_date
8732 INTO l_capt_update_date
8733 FROM cz_devl_projects
8734 WHERE devl_project_id = v_models_tbl(i);
8735 EXCEPTION
8736 WHEN OTHERS
8737 THEN
8738 l_capt_update_date := cz_utils.epoch_begin;
8739 END;
8740
8741 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
8742 THEN
8743 record_count := 0;
8744 EXIT;
8745 END IF;
8746 END LOOP;
8747 END IF;
8748
8749 -----check if template elements have changed
8750 -- but actually these templs are new or changed ones!
8751 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
8755 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
8752 THEN
8753 l_capt_update_date := cz_utils.epoch_begin;
8754
8756 LOOP
8757 BEGIN
8758 SELECT MAX(last_update_date)
8759 INTO l_capt_update_date
8760 FROM cz_ui_template_elements
8761 WHERE template_id = cz_pb_mgr.g_ui_templates_old_temp_id_ref(i);
8762 EXCEPTION
8763 WHEN OTHERS
8764 THEN
8765 l_capt_update_date := cz_utils.epoch_begin;
8766 END;
8767
8768 IF ((v_last_xfr_activity IS NOT NULL) AND(v_last_xfr_activity < l_capt_update_date))
8769 THEN
8770 record_count := 0;
8771 EXIT;
8772 END IF;
8773 END LOOP;
8774 END IF;
8775
8776 ----check if uis have changed
8777 cz_pb_mgr.v_ui_str := 'x';
8778
8779 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
8780 THEN
8781 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
8782 LOOP
8783 get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(i), v_last_update_date);
8784
8785 IF (v_last_xfr_activity IS NULL)
8786 THEN
8787 cz_pb_mgr.v_ui_str := 'UI';
8788 EXIT;
8789 ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
8790 THEN
8791 cz_pb_mgr.v_ui_str := 'UI';
8792 EXIT;
8793 END IF;
8794 END LOOP;
8795 END IF;
8796
8797 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
8798 THEN
8799 get_template_date(cz_pb_mgr.g_ui_templates_old_temp_id_ref, v_last_update_date);
8800
8801 IF (v_last_xfr_activity IS NULL)
8802 THEN
8803 cz_pb_mgr.v_ui_str := 'UI';
8804 ELSIF((v_last_xfr_activity IS NOT NULL) AND(v_last_update_date > v_last_xfr_activity))
8805 THEN
8806 cz_pb_mgr.v_ui_str := 'UI';
8807 END IF;
8808 END IF;
8809 ELSIF(g_object_type = template_publication)
8810 THEN
8811 get_max_template_date(cz_pb_mgr.v_root_model_id, l_max_template_date);
8812 END IF;
8813 END IF; /* end if of (record_count > 0) */
8814
8815 IF (g_object_type = MODEL_PUBLICATION)
8816 THEN
8817 IF ((record_count > 0) AND(cz_pb_mgr.v_ui_str <> 'UI'))
8818 THEN
8819 RETURN FALSE;
8820 ELSIF((record_count = refresh_rules_count) AND(cz_pb_mgr.v_ui_str <> 'UI'))
8821 THEN
8822 v_refresh_rules := 'YES';
8823 RETURN TRUE; ----refresh rules
8824 ELSIF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT = 0)
8825 THEN
8826 cz_pb_mgr.v_ui_str := 'x';
8827 RETURN TRUE;
8828 ELSE
8829 RETURN TRUE;
8830 END IF;
8831 ELSIF(g_object_type = template_publication)
8832 THEN
8833 IF (v_last_xfr_activity IS NULL)
8834 THEN
8835 RETURN TRUE;
8836 ELSIF(v_last_xfr_activity > l_max_template_date)
8837 THEN
8838 RETURN FALSE;
8839 ELSE
8840 RETURN TRUE;
8841 END IF;
8842 END IF;
8843 EXCEPTION
8844 WHEN OTHERS
8845 THEN
8846 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR', 'SQLERRM', SQLERRM);
8847 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.HAS_TOBE_PUBLISHED', SQLCODE);
8848 cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message, 1, 2000)));
8849 RAISE;
8850 END has_tobe_published;
8851
8852 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8853 ----procedure that removes duplicate values in models array
8854 ----
8855 PROCEDURE add_root_model(p_root_model_id IN NUMBER, p_models_array IN OUT NOCOPY cz_pb_mgr.t_ref)
8856 AS
8857 model_idx NUMBER := 0;
8858 root_model_found VARCHAR2(1) := 'F';
8859 BEGIN
8860 IF (p_models_array.COUNT > 0)
8861 THEN
8862 FOR i IN p_models_array.FIRST .. p_models_array.LAST
8863 LOOP
8864 IF (p_models_array(i) = p_root_model_id)
8865 THEN
8866 root_model_found := 'T';
8867 END IF;
8868 END LOOP;
8869 END IF;
8870
8871 IF (root_model_found <> 'T')
8872 THEN
8873 model_idx := p_models_array.COUNT + 1;
8874 p_models_array(model_idx) := p_root_model_id;
8875 END IF;
8876 EXCEPTION
8877 WHEN OTHERS
8878 THEN
8879 RAISE;
8880 END add_root_model;
8881
8882 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8883 ----procedure that returns the max node depth for a given child model
8884 ----if max node depth is greater than 1 then we need to determine the
8885 ----parent of this child (p_model_id) is exported or not.
8886 PROCEDURE get_max_node_depth(
8890 )
8887 p_model_id IN cz_model_ref_expls.model_id%TYPE
8888 ,p_root_model_id IN cz_model_ref_expls.model_id%TYPE
8889 ,x_node_depth OUT NOCOPY cz_model_ref_expls.node_depth%TYPE
8891 IS
8892 BEGIN
8893 SELECT MAX(node_depth)
8894 INTO x_node_depth
8895 FROM cz_model_ref_expls
8896 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;
8897 END get_max_node_depth;
8898
8899 -------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
8900 -------procedure that adds a parent of a child that is being exported
8901 -------to the export array.
8902 -------The first step is collect all models (exported and not exported) into
8903 ------l_all_models_array. Loop over each child model in l_all_models_array
8904 ------and check if the child model node_depth is greater than 1. If greater than 1
8905 ------then get all the parents at all levels for that child model
8906 ------check if the parent is being exported, if not add it to the export array.
8907 ------The root model is not part of any of the arrays here. We check for
8908 ------child models only if greater than one level below.
8909 PROCEDURE add_parent_models(
8910 p_root_model_id IN cz_model_ref_expls.model_id%TYPE
8911 ,p_models_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
8912 ,p_models_not_to_be_exported IN OUT NOCOPY cz_pb_mgr.t_ref
8913 )
8914 IS
8915 l_component_id cz_model_ref_expls.component_id%TYPE;
8916 l_node_depth cz_model_ref_expls.node_depth%TYPE;
8917 rec_count NUMBER := 0;
8918 l_models_exported cz_pb_mgr.t_ref_idx_vc2;
8919 l_models_not_exported cz_pb_mgr.t_ref_idx_vc2;
8920 l_all_models_array cz_pb_mgr.t_ref;
8921
8922 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)
8923 IS
8924 SELECT component_id
8925 FROM cz_model_ref_expls
8926 WHERE cz_model_ref_expls.deleted_flag = '0'
8927 AND cz_model_ref_expls.ps_node_type IN(263, 264)
8928 AND cz_model_ref_expls.model_ref_expl_id IN(
8929 SELECT parent_expl_node_id
8930 FROM cz_model_ref_expls x
8931 WHERE x.deleted_flag = '0' AND x.component_id = p_component_id
8932 AND x.model_id = p_top_model_id);
8933 BEGIN
8934 IF (p_models_not_to_be_exported.COUNT > 0)
8935 THEN
8936 ----ALL child models both exported and non exported
8937 ----are collected into l_all_models_array
8938 l_all_models_array.DELETE;
8939
8940 SELECT x.component_id
8941 BULK COLLECT INTO l_all_models_array
8942 FROM cz_model_ref_expls x
8943 WHERE x.deleted_flag = '0'
8944 AND x.model_id = p_root_model_id
8945 AND (x.ps_node_type = 263 OR x.ps_node_type = 264)
8946 AND x.node_depth = (SELECT MAX(b.node_depth)
8947 FROM cz_model_ref_expls b
8948 WHERE x.component_id = b.component_id AND b.model_id = p_root_model_id AND b.deleted_flag = '0')
8949 ORDER BY node_depth DESC;
8950
8951 IF (p_models_to_be_exported.COUNT > 0)
8952 THEN
8953 FOR j IN p_models_to_be_exported.FIRST .. p_models_to_be_exported.LAST
8954 LOOP
8955 l_models_exported(p_models_to_be_exported(j)) := p_models_to_be_exported(j);
8956 END LOOP;
8957 END IF;
8958
8959 FOR k IN p_models_not_to_be_exported.FIRST .. p_models_not_to_be_exported.LAST
8960 LOOP
8961 l_models_not_exported(p_models_not_to_be_exported(k)) := p_models_not_to_be_exported(k);
8962 END LOOP;
8963 IF (l_all_models_array.COUNT > 0) THEN
8964 FOR i IN l_all_models_array.FIRST .. l_all_models_array.LAST
8965 LOOP
8966 IF (l_models_exported.EXISTS(l_all_models_array(i)))
8967 THEN
8968 ---get max node_depth from cz_model_ref_expls for the child model
8969 get_max_node_depth(l_all_models_array(i), p_root_model_id, l_node_depth);
8970
8971 -----check if node depth > 1, we are interested only if the child model
8972 -----is at a level greater than 1 in the tree.
8973 IF (l_node_depth > 1)
8974 THEN
8975 -----the cursor is required because, there can be multiple
8976 -----occurrences of the same component at different levels
8977 -----in the model tree. In such a case all the parents of the child
8978 ----- are exported
8979 OPEN c_parent_models(l_all_models_array(i), p_root_model_id);
8980
8981 LOOP
8982 FETCH c_parent_models
8983 INTO l_component_id;
8984
8985 EXIT WHEN c_parent_models%NOTFOUND;
8986
8987 IF (NOT l_models_exported.EXISTS(l_component_id))
8988 THEN
8989 l_models_exported(l_component_id) := l_component_id;
8990 rec_count := p_models_to_be_exported.COUNT + 1;
8991 p_models_to_be_exported(rec_count) := l_component_id;
8992 l_models_not_exported.DELETE(l_component_id);
8993 END IF;
8994 END LOOP;
8995
8999 END LOOP; /* end loop of l_all_models_array.FIRST */
8996 CLOSE c_parent_models;
8997 END IF;
8998 END IF;
9000 END IF;
9001 -----we do not want to loop over single idx arrays
9002 -----because we would be looping more number of times if the array is sparse
9003 p_models_not_to_be_exported.DELETE;
9004 rec_count := 0;
9005 IF (l_all_models_array.COUNT > 0) THEN
9006 FOR notexpmodel IN l_all_models_array.FIRST .. l_all_models_array.LAST
9007 LOOP
9008 IF (NOT l_models_exported.EXISTS(l_all_models_array(notexpmodel)))
9009 THEN
9010 rec_count := p_models_not_to_be_exported.COUNT + 1;
9011 p_models_not_to_be_exported(rec_count) := l_all_models_array(notexpmodel);
9012 END IF;
9013 END LOOP;
9014 END IF;
9015 END IF;
9016 EXCEPTION
9017 WHEN OTHERS
9018 THEN
9019 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9020 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9021
9022 IF (c_parent_models%ISOPEN)
9023 THEN
9024 CLOSE c_parent_models;
9025 END IF;
9026
9027 RAISE;
9028 END add_parent_models;
9029 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9030 ------Procedure that retrieves the remote model id of the target model
9031 ------@p_server_id --- server local id of target instance
9032 ------@x_status --- publication status
9033 ------@p_model_id --- source model id
9034 ------@x_remote_model_id -- retrieved remote model id
9035 PROCEDURE get_remote_model_id(
9036 p_server_id IN cz_servers.server_local_id%TYPE
9037 ,p_model_id IN cz_pb_model_exports.model_id%TYPE
9038 ,x_status IN OUT NOCOPY VARCHAR2
9039 ,x_remote_model_id IN OUT NOCOPY cz_pb_model_exports.model_id%TYPE
9040 )
9041 AS
9042 BEGIN
9043 IF ((x_status <> PUBLICATION_ERROR) AND (cz_pb_mgr.v_session_parameter <> model_copy)) THEN
9044 IF cz_pb_mgr.v_cz_ps_nodes_idx_tbl.EXISTS(p_model_id) THEN
9045 x_remote_model_id := cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id);
9046 ELSE
9047 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model THEN
9048 IF p_server_id=0 THEN
9049 SELECT remote_model_id INTO x_remote_model_id
9050 FROM cz_pb_model_exports
9051 WHERE export_id=(SELECT max(export_id)
9052 FROM cz_pb_model_exports
9053 WHERE model_id=p_model_id AND server_id=0
9054 AND status='OK' AND migration_group_id=g_migration_group_id);
9055 ELSE
9056 EXECUTE IMMEDIATE 'SELECT remote_model_id '
9057 || ' '
9058 || 'FROM cz_pb_model_exports'
9059 || ' '
9060 || 'WHERE cz_pb_model_exports.server_id = :1'
9061 || ' '
9062 || 'AND cz_pb_model_exports.export_id = '
9063 || ' '
9064 || '(SELECT MIN(export_id)'
9065 || ' '
9066 || 'FROM cz_pb_model_exports x, cz_devl_projects'
9067 || cz_pb_mgr.v_db_link
9068 || ' farprj'
9069 || ' '
9070 || 'WHERE x.server_id = :2'
9071 || ' '
9072 || 'AND x.model_id = :3'
9073 || ' '
9074 || 'AND x.status = ''OK'''
9075 || ' '
9076 || 'AND x.remote_model_id = farprj.devl_project_id'
9077 || ' '
9078 || 'AND farprj.deleted_flag = ''0'''
9079 || ' '
9080 || 'AND farprj.post_migr_change_flag = :4'
9081 || ' '
9082 || 'AND x.migration_group_id IS NOT NULL)'
9083 || ' '
9084 || 'AND cz_pb_model_exports.model_id = :5'
9085 || ' '
9086 || 'AND cz_pb_model_exports.status = ''OK'''
9087 INTO x_remote_model_id
9088 USING p_server_id, p_server_id, p_model_id, cz_model_migration_pvt.change_flag_unchanged, p_model_id;
9089 END IF;
9090 ELSE
9091 SELECT cz_pb_model_exports.remote_model_id
9092 INTO x_remote_model_id
9093 FROM cz_pb_model_exports
9094 WHERE cz_pb_model_exports.server_id = p_server_id
9095 AND cz_pb_model_exports.export_id =
9096 (SELECT MAX(export_id)
9097 FROM cz_pb_model_exports
9098 WHERE cz_pb_model_exports.server_id = p_server_id
9099 AND cz_pb_model_exports.model_id = p_model_id
9100 AND cz_pb_model_exports.status = 'OK'
9101 AND migration_group_id IS NULL)
9102 AND cz_pb_model_exports.model_id = p_model_id
9103 AND cz_pb_model_exports.status = 'OK';
9104 END IF;
9105
9106 cz_pb_mgr.v_cz_ps_nodes_idx_tbl(p_model_id) := x_remote_model_id;
9107 END IF;
9111 END IF;
9108
9109 ELSE
9110 x_remote_model_id := p_model_id;
9112 EXCEPTION
9113 WHEN OTHERS THEN
9114 cz_pb_mgr.v_err_message :=
9115 'Error in retrieving remote model id from model exports for model : ' || p_model_id || ' on ' || p_server_id || ' : ' || SQLERRM;
9116 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMMODELID', SQLCODE);
9117 x_status := PUBLICATION_ERROR;
9118 RAISE;
9119 END get_remote_model_id;
9120 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9121 ------ get_models_tobe_exported gets all models to be exported and those
9122 ------ that are not to be exported to the production database
9123 ------ v_models_to_be_exported
9124 ------ v_models_not_to_be_exported
9125 ----- call to add_root_model add the root model if it does not exist
9126 PROCEDURE get_models_tobe_exported(rootmodelid IN NUMBER)
9127 AS
9128 CURSOR model_cur(in_root_model NUMBER)
9129 IS
9130 SELECT DISTINCT component_id
9131 FROM cz_model_ref_expls x
9132 WHERE x.model_id = in_root_model AND x.deleted_flag = '0' AND(x.ps_node_type = 263 OR x.ps_node_type = 264);
9133
9134 v_count PLS_INTEGER := 0;
9135 v_models model_id_table;
9136 record_index NUMBER := 0;
9137 not_exported_record_index NUMBER := 0;
9138 v_model_id cz_model_publications.model_id%TYPE;
9139 v_expr_last_update cz_expression_nodes.last_update_date%TYPE;
9140 l_exp_models_idx_ref cz_pb_mgr.t_ref_idx_vc2;
9141 l_intl_text_date DATE;
9142 l_eff_set_date DATE;
9143 l_max_arc_date DATE;
9144 l_max_ui_date DATE;
9145 l_ps_node_update_date DATE;
9146 l_remote_model_cur ref_cursor;
9147 l_remote_model cz_pb_model_exports.model_id%TYPE;
9148 l_remote_proj cz_pb_model_exports.model_id%TYPE;
9149 l_remote_name VARCHAR2(32000);
9150 child_model_ui_has_changed BOOLEAN := FALSE;
9151 BEGIN
9152 cz_pb_mgr.v_models_to_be_exported.DELETE;
9153 cz_pb_mgr.v_models_not_to_be_exported.DELETE;
9154
9155 IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
9156 THEN
9157 OPEN model_cur(rootmodelid);
9158
9159 /* Bug 5523268
9160 * Check the changes to the UI in Source as well
9161 * Check for the change in the entire reference structure. I
9162 * if there is a change in the UI of child models, pick that up
9163 * as well;
9164 */
9165
9166 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9167 THEN
9168 child_model_ui_has_changed :=has_ui_inany_chld_mdl_changed(rootmodelid);
9169 END IF;
9170
9171 IF (cz_pb_mgr.v_ui_str = 'UI' or child_model_ui_has_changed )
9172 THEN
9173 LOOP
9174 FETCH model_cur
9175 INTO v_model_id;
9176
9177 EXIT WHEN model_cur%NOTFOUND;
9178 record_index := record_index + 1;
9179 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9180 END LOOP;
9181
9182 add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
9183 ELSE
9184 LOOP
9185 FETCH model_cur
9186 INTO v_model_id;
9187
9188 EXIT WHEN model_cur%NOTFOUND;
9189 v_count := 0;
9190
9191 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
9192 IF cz_pb_mgr.v_server_id = 0 THEN
9193 SELECT COUNT(*) INTO v_count
9194 FROM cz_pb_model_exports
9195 WHERE model_id=v_model_id AND status=publication_ok AND server_id=0
9196 AND migration_group_id=g_migration_group_id;
9197 ELSE
9198 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM cz_pb_model_exports x, cz_devl_projects'
9199 || cz_pb_mgr.v_db_link
9200 || ' farprj'
9201 || ' '
9202 || 'WHERE x.model_id = :1'
9203 || ' '
9204 || 'AND x.status = :2'
9205 || ' '
9206 || 'AND x.server_id = :3'
9207 || ' '
9208 || 'AND x.remote_model_id = farprj.devl_project_id'
9209 || ' '
9210 || 'AND farprj.deleted_flag = ''0'''
9211 || ' '
9212 || 'AND farprj.post_migr_change_flag = :4'
9213 || ' '
9214 || 'AND x.migration_group_id IS NOT NULL'
9215 INTO v_count
9216 USING v_model_id, publication_ok, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged;
9217 END IF;
9218 ELSE
9219 SELECT COUNT(*)
9220 INTO v_count
9221 FROM cz_pb_model_exports x
9222 WHERE x.model_id = v_model_id AND x.status = publication_ok AND x.server_id = cz_pb_mgr.v_server_id
9223 AND migration_group_id IS NULL;
9224 END IF;
9225
9226 IF (v_count = 0)
9227 THEN
9228 record_index := record_index + 1;
9232
9229 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9230 ELSE
9231 v_count := 0;
9233 -------check if expr nodes have changed since the model was last published
9234 SELECT MAX(last_update_date)
9235 INTO v_expr_last_update
9236 FROM cz_expression_nodes t
9237 WHERE t.deleted_flag = '0'
9238 AND t.expr_type <> 208
9239 AND EXISTS(SELECT 1
9240 FROM cz_rules
9241 WHERE rule_id = t.rule_id AND devl_project_id = v_model_id AND deleted_flag = '0')
9242 AND t.deleted_flag = '0'
9243 AND t.expr_type <> 208;
9244
9245 IF (v_expr_last_update IS NULL)
9246 THEN
9247 v_expr_last_update := cz_utils.epoch_begin;
9248 END IF;
9249
9250 -----effectivitity set check
9251 get_effectivity_set_date(v_model_id, l_eff_set_date);
9252
9253 IF (l_eff_set_date > v_expr_last_update)
9254 THEN
9255 v_expr_last_update := l_eff_set_date;
9256 END IF;
9257
9258 ------check if intl text has changed
9259 get_intl_text_date(v_model_id, l_intl_text_date);
9260
9261 IF (l_intl_text_date > v_expr_last_update)
9262 THEN
9263 v_expr_last_update := l_intl_text_date;
9264 END IF;
9265
9266 get_psnode_last_date(v_model_id, l_ps_node_update_date);
9267 IF (l_ps_node_update_date > v_expr_last_update)
9268 THEN
9269 v_expr_last_update := l_ps_node_update_date;
9270 END IF;
9271
9272
9273 -----------end expr nodes check
9274 SELECT GREATEST(MAX(arc.last_update_date), MAX(REF.last_update_date))
9275 INTO l_max_arc_date
9276 FROM cz_archives arc, cz_archive_refs REF
9277 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';
9278
9279 IF l_max_arc_date IS NOT NULL AND l_max_arc_date > v_expr_last_update
9280 THEN
9281 v_expr_last_update := l_max_arc_date;
9282 END IF;
9283
9284 -- check if any new ui created after last xfr activity
9285 -- call get_max_ui_date if this check still not enough
9286 SELECT MAX(creation_date) INTO l_max_ui_date
9287 FROM cz_ui_defs
9288 WHERE deleted_flag = '0' AND devl_project_id = v_model_id AND ui_style <> '-1';
9289 IF l_max_ui_date IS NOT NULL AND l_max_ui_date > v_expr_last_update THEN
9290 v_expr_last_update := l_max_ui_date;
9291 END IF;
9292
9293 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
9294 IF cz_pb_mgr.v_server_id = 0 THEN
9295 SELECT COUNT(*) INTO v_count
9296 FROM cz_devl_projects x, cz_pb_model_exports y
9297 WHERE x.devl_project_id = y.model_id
9298 AND x.last_update_date < y.last_xfr_activity
9299 AND y.last_xfr_activity > v_expr_last_update
9300 AND y.model_id = v_model_id AND y.server_id = 0
9301 AND y.status = 'OK' AND y.migration_group_id = g_migration_group_id;
9302 ELSE
9303 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM cz_devl_projects x, cz_pb_model_exports y, cz_devl_projects'
9304 || cz_pb_mgr.v_db_link
9305 || ' farprj'
9306 || ' '
9307 || 'WHERE x.devl_project_id = y.model_id'
9308 || ' '
9309 || 'AND x.last_update_date < y.last_xfr_activity'
9310 || ' '
9311 || 'AND y.last_xfr_activity > :1'
9312 || ' '
9313 || 'AND y.model_id = :2'
9314 || ' '
9315 || 'AND y.server_id = :3'
9316 || ' '
9317 || 'AND y.remote_model_id = farprj.devl_project_id'
9318 || ' '
9319 || 'AND farprj.deleted_flag = ''0'''
9320 || ' '
9321 || 'AND farprj.post_migr_change_flag = :4'
9322 || ' '
9323 || 'AND y.migration_group_id IS NOT NULL AND y.status = :5'
9324 INTO v_count
9325 USING v_expr_last_update, v_model_id, cz_pb_mgr.v_server_id, cz_model_migration_pvt.change_flag_unchanged, publication_ok;
9326 END IF;
9327 ELSE
9328 SELECT COUNT(*)
9329 INTO v_count
9330 FROM cz_devl_projects x, cz_pb_model_exports y
9331 WHERE x.devl_project_id = y.model_id
9335 AND y.server_id = cz_pb_mgr.v_server_id
9332 AND x.last_update_date < y.last_xfr_activity
9333 AND y.last_xfr_activity > v_expr_last_update
9334 AND y.model_id = v_model_id
9336 AND y.status = 'OK' AND y.migration_group_id IS NULL;
9337 END IF;
9338
9339 IF (v_count = 0)
9340 THEN
9341 record_index := record_index + 1;
9342 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9343 ELSE
9344 -----check if the model exists and is not deleted
9345 l_remote_model := 0;
9346 l_remote_proj := 0;
9347
9348 BEGIN
9349 get_remote_model_id(cz_pb_mgr.v_server_id, v_model_id, cz_pb_mgr.v_status_code, l_remote_model);
9350 EXCEPTION
9351 WHEN NO_DATA_FOUND THEN
9352 record_index := record_index + 1;
9353 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9354 END;
9355
9356 IF (l_remote_model > 0)
9357 THEN
9358 OPEN l_remote_model_cur FOR 'SELECT devl_project_id,'
9359 || ' '
9360 || 'REPLACE(cz_developer_utils_pvt.get_repository_path'
9361 || cz_pb_mgr.v_db_link
9362 || ' '
9363 || '(devl_project_id, ''PRJ''), ''/'', ''.'')'
9364 || ' '
9365 || 'FROM cz_devl_projects'
9366 || cz_pb_mgr.v_db_link
9367 || ' t'
9368 || ' '
9369 || 'WHERE t.devl_project_id = :1'
9370 || ' '
9371 || 'AND t.deleted_flag = ''0''' USING l_remote_model;
9372
9373 LOOP
9374 FETCH l_remote_model_cur
9375 INTO l_remote_proj, l_remote_name;
9376
9377 EXIT WHEN l_remote_model_cur%NOTFOUND;
9378 END LOOP;
9379
9380 CLOSE l_remote_model_cur;
9381
9382 IF (l_remote_proj > 0)
9383 THEN
9384 not_exported_record_index := not_exported_record_index + 1;
9385 cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id;
9386 v_remote_names_not_exported(v_model_id) := l_remote_name;
9387 ELSE
9388 record_index := record_index + 1;
9389 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9390 END IF;
9391 END IF;
9392 END IF;
9393 END IF;
9394 END LOOP;
9395
9396 add_parent_models(rootmodelid, cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_models_not_to_be_exported);
9397 add_root_model(rootmodelid, cz_pb_mgr.v_models_to_be_exported);
9398 END IF;
9399
9400 CLOSE model_cur;
9401 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
9402 THEN
9403 l_exp_models_idx_ref.DELETE;
9404
9405 OPEN model_cur(rootmodelid);
9406
9407 LOOP
9408 FETCH model_cur
9409 INTO v_model_id;
9410
9411 EXIT WHEN model_cur%NOTFOUND;
9412
9413 IF (cz_pb_mgr.copy_root_only = 'NO')
9414 THEN
9415 record_index := record_index + 1;
9416 cz_pb_mgr.v_models_to_be_exported(record_index) := v_model_id;
9417 l_exp_models_idx_ref(v_model_id) := v_model_id;
9418 ELSIF(cz_pb_mgr.copy_root_only = 'YES')
9419 THEN
9420 NULL;
9421 ----not_exported_record_index := not_exported_record_index + 1;
9422 ----cz_pb_mgr.v_models_not_to_be_exported(not_exported_record_index) := v_model_id ;
9423 END IF;
9424 END LOOP;
9425
9426 CLOSE model_cur;
9427
9428 IF (NOT l_exp_models_idx_ref.EXISTS(rootmodelid))
9429 THEN
9430 record_index := record_index + 1;
9431 cz_pb_mgr.v_models_to_be_exported(record_index) := rootmodelid;
9432 END IF;
9433 END IF;
9434 EXCEPTION
9435 WHEN OTHERS
9436 THEN
9437 CLOSE model_cur;
9438
9439 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9440 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9441 RAISE;
9442 END get_models_tobe_exported;
9443
9444 ---->>>>>>>>>>>>>>>>>>>>>>>>>
9445 ---------Creates an export request for each model in the PL/SQL table cz_pb_mgr.v_models_to_be_exported
9446 PROCEDURE create_export_request(rootmodelid IN NUMBER, modelid IN NUMBER, publicationid IN NUMBER, serverid IN NUMBER)
9447 AS
9448 v_node_depth cz_model_ref_expls.node_depth%TYPE;
9452 FROM cz_model_ref_expls
9449 BEGIN
9450 SELECT NVL(MAX(node_depth), 0)
9451 INTO v_node_depth
9453 WHERE model_id = rootmodelid AND component_id = modelid AND deleted_flag = '0';
9454
9455 INSERT INTO cz_pb_model_exports
9456 (export_id, export_seq, model_id, root_model_id, server_id, publication_id, export_reverse_seq
9457 ,superseded_flag, last_xfr_activity, creation_date, last_update_date, created_by, last_updated_by, migration_group_id
9458 )
9459 VALUES (cz_pb_model_exports_s.NEXTVAL, cz_pb_model_exports_s.CURRVAL, modelid, rootmodelid, serverid, publicationid, NVL(v_node_depth, 0)
9460 ,'N', SYSDATE, SYSDATE, SYSDATE, 1, 1, cz_pb_mgr.g_migration_group_id
9461 );
9462
9463 SELECT cz_pb_model_exports_s.CURRVAL
9464 INTO cz_pb_mgr.v_export_id
9465 FROM DUAL;
9466
9467 COMMIT;
9468 EXCEPTION
9469 WHEN OTHERS
9470 THEN
9471 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXP_REQUEST_ERR', 'MODELID', modelid);
9472 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CREATE_EXPORT_REQUEST', SQLCODE);
9473 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9474 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9475 RAISE;
9476 END create_export_request;
9477
9478 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9479 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9480 PROCEDURE create_copy_requests
9481 IS
9482 BEGIN
9483 IF ((cz_pb_mgr.v_session_parameter = model_copy) AND(cz_pb_mgr.v_models_not_to_be_exported.COUNT > 0))
9484 THEN
9485 FOR copyid IN cz_pb_mgr.v_models_not_to_be_exported.FIRST .. cz_pb_mgr.v_models_not_to_be_exported.LAST
9486 LOOP
9487 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);
9488
9489 UPDATE cz_pb_model_exports
9490 SET remote_model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid)
9491 ,status = publication_ok
9492 WHERE cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id
9493 AND cz_pb_model_exports.model_id = cz_pb_mgr.v_models_not_to_be_exported(copyid);
9494 END LOOP;
9495 END IF;
9496
9497 COMMIT;
9498 EXCEPTION
9499 WHEN OTHERS
9500 THEN
9501 RAISE;
9502 END create_copy_requests;
9503
9504 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9505 -------------procedure to check publications on target instance
9506 PROCEDURE remote_pb_check(p_publication_id NUMBER)
9507 IS
9508 remote_pb_cv ref_cursor;
9509 v_publication_id NUMBER := 0;
9510 v_remote_link cz_servers.fndnam_link_name%TYPE;
9511 BEGIN
9512 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
9513 THEN
9514 IF ((p_publication_id > 0) AND(cz_pb_mgr.v_session_parameter <> model_copy))
9515 THEN
9516 v_remote_link := retrieve_db_link(cz_pb_mgr.v_server_id);
9517 cz_pb_mgr.v_insert_string :=
9518 'SELECT publication_id FROM cz_model_publications' || v_remote_link || ' t' || ' ' || 'WHERE t.publication_id = '
9519 || p_publication_id;
9520
9521 OPEN remote_pb_cv FOR cz_pb_mgr.v_insert_string;
9522
9523 LOOP
9524 FETCH remote_pb_cv
9525 INTO v_publication_id;
9526
9527 EXIT WHEN remote_pb_cv%NOTFOUND;
9528 END LOOP;
9529
9530 CLOSE remote_pb_cv;
9531
9532 IF (v_publication_id = 0)
9533 THEN
9534 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'PUBID', p_publication_id);
9535 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
9536 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9537 END IF;
9538 END IF;
9539 END IF;
9540 EXCEPTION
9541 WHEN OTHERS
9542 THEN
9543 CLOSE remote_pb_cv;
9544
9545 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REMOTE_ERR', 'SQLERRM', SQLERRM);
9546 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTEPBCHECKID', SQLCODE);
9547 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9548 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9549 RAISE;
9550 END remote_pb_check;
9551
9552 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9553 ------insert into effectivity sets table
9554 PROCEDURE insert_eff_sets(
9555 p_eff_set_id_ref IN cz_pb_mgr.t_ref
9556 ,p_eff_sets_old_key IN OUT NOCOPY cz_pb_mgr.t_ref
9557 ,p_eff_sets_new_key IN OUT NOCOPY cz_pb_mgr.t_ref
9558 ,p_eff_single_idx_key IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
9559 ,p_old_key_name IN VARCHAR2
9560 ,p_new_key_name IN VARCHAR2
9561 ,p_eff_text IN VARCHAR2
9562 )
9563 IS
9564 plsql_table_list cz_pb_mgr.col_plsql_table_list;
9565 v_cz_eff_sets_old_ref cz_pb_mgr.t_ref;
9566 v_cz_eff_sets_new_ref cz_pb_mgr.t_ref;
9567 check_all_null BOOLEAN := FALSE;
9568 v_eff_count PLS_INTEGER := 0;
9569 rec_count PLS_INTEGER := 0;
9570 l_eff_set_new_id NUMBER := NULL;
9571 l_eff_sets_exist_key cz_pb_mgr.t_ref;
9572 BEGIN
9573 IF (p_eff_set_id_ref.COUNT > 0)
9574 THEN
9575 p_eff_sets_old_key.DELETE;
9576 p_eff_sets_new_key.DELETE;
9580 cz_pb_mgr.g_eff_set_obj_type.DELETE;
9577 l_eff_sets_exist_key.DELETE;
9578 p_eff_single_idx_key.DELETE;
9579 cz_pb_mgr.v_cz_eff_sets_idx_tbl.DELETE;
9581 cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
9582 cz_pb_mgr.v_cz_eff_sets_new_tbl.DELETE;
9583 check_all_null := TRUE;
9584
9585 FOR p IN p_eff_set_id_ref.FIRST .. p_eff_set_id_ref.LAST
9586 LOOP
9587 IF (p_eff_set_id_ref(p) IS NOT NULL)
9588 THEN
9589 BEGIN
9590 check_all_null := FALSE;
9591 v_cz_eff_sets_old_ref.DELETE;
9592 v_cz_eff_sets_new_ref.DELETE;
9593
9594 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_effectivity_sets_seq
9595 , 'cz_effectivity_sets_s.nextval' || cz_pb_mgr.v_db_link
9596 ,cz_pb_mgr.v_oraclesequenceincr
9597 )
9598 ,effectivity_set_id
9599 BULK COLLECT INTO v_cz_eff_sets_new_ref
9600 ,v_cz_eff_sets_old_ref
9601 FROM cz_effectivity_sets
9602 WHERE cz_effectivity_sets.effectivity_set_id = p_eff_set_id_ref(p) AND cz_effectivity_sets.deleted_flag = '0';
9603 EXCEPTION
9604 WHEN NO_DATA_FOUND
9605 THEN
9606 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
9607 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EFFSETS', SQLCODE);
9608 WHEN OTHERS
9609 THEN
9610 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_effectivity_sets', 'SQLERRM', SQLERRM);
9611 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
9612 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9613 END;
9614
9615 IF (v_cz_eff_sets_new_ref.COUNT > 0)
9616 THEN
9617 v_eff_count := cz_pb_mgr.v_cz_eff_sets_new_tbl.COUNT;
9618
9619 FOR r IN v_cz_eff_sets_new_ref.FIRST .. v_cz_eff_sets_new_ref.LAST
9620 LOOP
9621 IF (v_cz_eff_sets_new_ref(r) IS NOT NULL)
9622 THEN
9623 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9624 THEN
9625 l_eff_set_new_id := mm_sync_eff_sets(v_cz_eff_sets_old_ref(r), v_cz_eff_sets_new_ref(r));
9626
9627 IF ((l_eff_set_new_id IS NULL) AND(NOT v_cz_eff_sets_idx_tbl.EXISTS(v_cz_eff_sets_old_ref(r))))
9628 THEN
9629 l_eff_set_new_id := v_cz_eff_sets_new_ref(r);
9630 v_eff_count := v_eff_count + 1;
9631 p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
9632 p_eff_sets_new_key(v_eff_count) := l_eff_set_new_id;
9633 cz_pb_mgr.g_eff_set_obj_type(v_eff_count) := 'EFF';
9634 cz_pb_mgr.g_enclosing_fld_rp_entry(v_eff_count) := cz_pb_mgr.g_migration_tgt_folder_id;
9635 cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=p_eff_sets_new_key(v_eff_count);
9636 ELSE
9637 cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=l_eff_set_new_id;
9638 END IF;
9639 ELSE
9640 v_eff_count := v_eff_count + 1;
9641 p_eff_sets_old_key(v_eff_count) := v_cz_eff_sets_old_ref(r);
9642 p_eff_sets_new_key(v_eff_count) := v_cz_eff_sets_new_ref(r);
9643 cz_pb_mgr.v_cz_eff_sets_idx_tbl(v_cz_eff_sets_old_ref(r)):=v_cz_eff_sets_new_ref(r);
9644 END IF;
9645 END IF;
9646 END LOOP;
9647 END IF;
9648 END IF;
9649 END LOOP;
9650
9651 ------------------insert into cz effectivity sets
9652 plsql_table_list.DELETE;
9653 rec_count := 1;
9654 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
9655 plsql_table_list(rec_count).table_name := p_new_key_name;
9656
9657 IF (NOT check_all_null)
9658 THEN
9659 BEGIN
9660 insert_into_table('cz_effectivity_sets'
9661 ,'effectivity_set_id'
9662 ,cz_pb_mgr.v_db_link
9663 ,plsql_table_list
9664 ,p_old_key_name
9665 ,p_eff_sets_old_key
9666 );
9667
9668 IF (p_eff_sets_new_key.COUNT > 0 AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9669 THEN
9670 ----------begin insert into cz_rp_entries----------------
9671 plsql_table_list.DELETE;
9672 rec_count := 1;
9673 plsql_table_list(rec_count).col_name := 'object_id';
9674 plsql_table_list(rec_count).table_name := p_new_key_name;
9675 rec_count := rec_count + 1;
9676 plsql_table_list(rec_count).col_name := 'object_type';
9677 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_eff_set_obj_type';
9678 rec_count := rec_count + 1;
9682 ,'object_id'
9679 plsql_table_list(rec_count).col_name := 'enclosing_folder';
9680 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
9681 insert_into_rp_entries('cz_rp_entries'
9683 ,'object_type'
9684 ,cz_pb_mgr.v_db_link
9685 ,plsql_table_list
9686 ,p_old_key_name
9687 ,'cz_pb_mgr.g_eff_set_obj_type'
9688 ,p_eff_sets_old_key
9689 ,cz_pb_mgr.g_eff_set_obj_type
9690 );
9691 ----------end insert into cz_rp_entries----------------
9692 END IF;
9693
9694 COMMIT;
9695 EXCEPTION
9696 WHEN OTHERS
9697 THEN
9698 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9699 END;
9700 END IF;
9701
9702 p_eff_sets_old_key.DELETE;
9703 p_eff_sets_new_key.DELETE;
9704 END IF;
9705 EXCEPTION
9706 WHEN OTHERS
9707 THEN
9708 cz_pb_mgr.v_err_message := 'Insert into cz eff sets for: ' || p_eff_text;
9709 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTEFFSETS', SQLCODE);
9710 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9711 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9712 RAISE;
9713 END insert_eff_sets;
9714
9715 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9716 -----procedure that verifies if the model being published is a BOM model
9717 -----and is being published to a different instance different from the one
9718 -----it has been imported from.
9719 -----@p_server_id is the target_server_id
9720 -----@p_model_id is the devl_project_id of the model being published
9721 -----@cz_pb_mgr.bom_flag is the out parameter: 'Y' indicates the model is to be
9722 -----synchronized. 'N' indicates that no sync is necessary.
9723 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)
9724 AS
9725 v_source_server NUMBER;
9726 v_bom_persistent_node_id NUMBER;
9727 v_bom_ps_node_id NUMBER;
9728 v_bom_err_flag VARCHAR2(1);
9729 v_bom_err_msg VARCHAR2(2000);
9730 v_verify_model_run_id NUMBER;
9731 v_bomsynch_err_flag VARCHAR2(2000);
9732 v_model_name cz_devl_projects.NAME%TYPE;
9733
9734 TYPE verify_model_message_list IS TABLE OF cz_db_logs.MESSAGE%TYPE
9735 INDEX BY BINARY_INTEGER;
9736
9737 v_verify_model_msg_ref verify_model_message_list;
9738 BEGIN
9739 -------no synchronization required if published locally
9740 IF ((p_server_id <> 0) AND(g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
9741 )
9742 THEN
9743 -----call to this procedure made to determine if the model being published
9744 -----contains a BOM
9745 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);
9746
9747 --------v_bom_err_flag = 0 indicates that the model contains a single BOM
9748 --------if it contains a single BOM identify the server from where the model
9749 --------was imported
9750 IF (v_bom_err_flag = '0')
9751 THEN
9752 SELECT source_server
9753 INTO v_source_server
9754 FROM cz_xfr_project_bills
9755 WHERE model_ps_node_id = (SELECT devl_project_id
9756 FROM cz_ps_nodes
9757 WHERE cz_ps_nodes.ps_node_id = v_bom_ps_node_id AND cz_ps_nodes.deleted_flag = '0');
9758
9759 ------if the server from where it was imported is different from the target
9760 ------to which it is being published then call the bom sync procedure
9761 ------else no sync required
9762 IF (v_source_server <> p_server_id)
9763 THEN
9764 BEGIN
9765 SELECT local_name
9766 INTO cz_pb_mgr.v_server_local_name
9767 FROM cz_servers
9768 WHERE cz_servers.server_local_id = p_server_id;
9769 EXCEPTION
9770 WHEN NO_DATA_FOUND
9771 THEN
9772 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_NO_SERVER_NAME_FOUND', 'SERVERID', p_server_id);
9773 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
9774 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9775 WHEN OTHERS
9776 THEN
9777 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SERVER_NAME_ERR', 'SERVERID', p_server_id);
9778 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
9779 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9780 END;
9781
9782 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);
9783
9784 ----- if v_bomsynch_err_flag is not success then set publication status to ERROR
9785 IF (v_bomsynch_err_flag <> cz_bom_synch.error_flag_success)
9786 THEN
9787 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9788
9792 FROM cz_devl_projects
9789 BEGIN
9790 SELECT NAME
9791 INTO v_model_name
9793 WHERE devl_project_id = cz_pb_mgr.v_root_model_id AND deleted_flag = '0';
9794 EXCEPTION
9795 WHEN OTHERS
9796 THEN
9797 v_model_name := 'Model name not found for model_id: ' || cz_pb_mgr.v_root_model_id;
9798 END;
9799
9800 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_VERIFY_ERR', 'MODELNAME', v_model_name);
9801 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROC', SQLCODE);
9802
9803 ----trap errors from verify model to populate cz_db_logs
9804 BEGIN
9805 SELECT MESSAGE
9806 BULK COLLECT INTO v_verify_model_msg_ref
9807 FROM cz_db_logs
9808 WHERE cz_db_logs.run_id = v_verify_model_run_id;
9809 EXCEPTION
9810 WHEN NO_DATA_FOUND
9811 THEN
9812 cz_pb_mgr.v_err_message := 'No messages from verify model procedure';
9813 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
9814 WHEN OTHERS
9815 THEN
9816 cz_pb_mgr.v_err_message := 'ERROR in bulk collect of messages for verify_model_procedure: ' || SQLERRM;
9817 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
9818 END;
9819
9820 IF (v_verify_model_msg_ref.COUNT > 0)
9821 THEN
9822 FOR j IN v_verify_model_msg_ref.FIRST .. v_verify_model_msg_ref.LAST
9823 LOOP
9824 IF (v_verify_model_msg_ref(j) IS NOT NULL)
9825 THEN
9826 cz_pb_mgr.v_err_message := v_verify_model_msg_ref(j);
9827 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYMODELMSG', SQLCODE);
9828 END IF;
9829 END LOOP;
9830 END IF;
9831 ELSE
9832 cz_pb_mgr.bomsynch_flag := 'Y';
9833 END IF;
9834 ELSE
9835 cz_pb_mgr.bomsynch_flag := 'N';
9836 END IF;
9837 ----- v_bom_err_flag = 2 then NO BOM SYNC to be done
9838 ELSIF(v_bom_err_flag = '2')
9839 THEN
9840 cz_pb_mgr.bomsynch_flag := 'N';
9841 cz_pb_mgr.v_err_message := 'No BOM component found in model: ' || TO_CHAR(p_model_id);
9842 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
9843 -----v_bom_err_flag is not 0 or 2 set the publication status to ERROR
9844 ELSE
9845 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9846 cz_pb_mgr.v_err_message := 'Error: two bom models exist in model: ' || TO_CHAR(p_model_id);
9847 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VERIFYBOMSYNCH', SQLCODE);
9848 END IF;
9849 ELSE
9850 cz_pb_mgr.bomsynch_flag := 'N';
9851 END IF;
9852 EXCEPTION
9853 WHEN OTHERS
9854 THEN
9855 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_BOMSYNCH_PROC_ERR', 'SQLERRM', SQLERRM);
9856 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.BOMSYNCHPROCEDURE', SQLCODE);
9857 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9858 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9859 RAISE;
9860 END verify_model_for_sync;
9861
9862 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9863 ------procedure to get synchronized values for organization_id,
9864 ------top_item_id and product_key of cz_model_publications
9865 ------If no bom synch required, then default values are returned
9866 PROCEDURE get_synchronized_pb_values(p_publication_id IN NUMBER)
9867 IS
9868 BEGIN
9869 IF (p_publication_id > 0)
9870 THEN
9871 SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_orgid(organization_id), 'N', organization_id)
9872 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_topitemid(top_item_id), 'N', top_item_id)
9873 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.modelpublication_productkey(product_key), 'N', product_key)
9874 INTO cz_pb_mgr.v_bomsynch_org_id
9875 ,cz_pb_mgr.v_bomsynch_item_id
9876 ,cz_pb_mgr.v_bomsynch_product_key
9877 FROM cz_model_publications
9878 WHERE cz_model_publications.publication_id = p_publication_id;
9879 END IF;
9880 EXCEPTION
9881 WHEN OTHERS
9882 THEN
9883 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GET_SYNC_ERR', 'SQLERRM', SQLERRM);
9884 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETSYNCVALUES', SQLCODE);
9885 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
9886 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
9887 RAISE;
9888 END get_synchronized_pb_values;
9889
9890 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9891 ------function returns true when p_str is a number
9892 ------used in replace_lce_texts
9893 FUNCTION is_number(p_str IN VARCHAR2)
9894 RETURN BOOLEAN
9895 IS
9896 v_numval NUMBER;
9897 BEGIN
9898 IF (p_str IS NOT NULL)
9899 THEN
9903 RETURN FALSE;
9900 v_numval := TO_NUMBER(p_str);
9901 RETURN TRUE;
9902 ELSE
9904 END IF;
9905 EXCEPTION
9906 WHEN OTHERS
9907 THEN
9908 RETURN FALSE;
9909 END is_number;
9910
9911 FUNCTION is_val_number (p_str IN VARCHAR2)
9912 RETURN VARCHAR2 IS
9913
9914 BEGIN
9915
9916 IF(is_number(p_str))
9917 THEN
9918 RETURN 'TRUE';
9919
9920 ELSE
9921
9922 RETURN 'FALSE';
9923 END IF;
9924
9925 END is_val_number;
9926
9927 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
9928 -------procedure to replace reason ids and unsatisfied message
9929 -------ids in logic text.
9930 -------p_logic_text: is the lce text
9931 -------p_pattern : pattern to search for like '... ' for reason ids
9932 -------p_column : name of the column like reason_id
9933 -------x_logic_text: out parameter contains replaced text
9934 PROCEDURE replace_intl_texts(p_logic_text IN VARCHAR2, p_pattern IN VARCHAR2, p_column IN VARCHAR2, x_logic_text IN OUT NOCOPY VARCHAR2)
9935 IS
9936 v_search_str VARCHAR2(200);
9937 v_replace_str VARCHAR2(200);
9938 v_idx_number NUMBER;
9939 v_rep_idx_no NUMBER;
9940 v_instr PLS_INTEGER;
9941 v_lce_text VARCHAR2(4000);
9942 v_complete_str NUMBER;
9943 v_complete_str1 NUMBER;
9944 v_complete_str2 NUMBER;
9945 v_pattern VARCHAR2(200);
9946 v_lce_text_str VARCHAR2(4000);
9947 v_end_delim_str varchar2(25);
9948
9949 BEGIN
9950 IF (p_logic_text IS NOT NULL) THEN
9951 v_lce_text := p_logic_text;
9952 v_lce_text_str := p_logic_text;
9953 v_instr := INSTR(v_lce_text, p_pattern);
9954 WHILE (v_instr > 0)
9955 LOOP
9956 IF (p_pattern LIKE reasonid) THEN
9957 v_instr := v_instr + 4;
9958 v_pattern := p_pattern;
9959 v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
9960 ELSE -- IF (p_pattern LIKE unmsgid) THEN
9961 v_pattern := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr, 5)));
9962 v_pattern := v_pattern || ' ';
9963 v_instr := v_instr + 5;
9964 v_lce_text := LTRIM(RTRIM(SUBSTR(v_lce_text, v_instr)));
9965 END IF;
9966
9967 v_complete_str1 := INSTR(v_lce_text, ' ');
9968 v_complete_str2 := INSTR(v_lce_text, pbnewline);
9969
9970 IF v_complete_str2 > 0 AND v_complete_str1 > 0 THEN
9971 v_complete_str := LEAST(v_complete_str1, v_complete_str2) - 1;
9972 IF v_complete_str1 > v_complete_str2 THEN
9973 v_end_delim_str := pbnewline;
9974 ELSE
9975 v_end_delim_str := ' ';
9976 END IF;
9977 ELSIF v_complete_str2 > 0 AND v_complete_str1 = 0 THEN
9978 v_complete_str := v_complete_str2 - 1;
9979 v_end_delim_str:= pbnewline;
9980 ELSIF v_complete_str2 = 0 AND v_complete_str1 > 0 THEN
9981 v_complete_str := v_complete_str1 - 1;
9982 v_end_delim_str:= ' ';
9983 ELSE -- v_complete_str2 = 0) AND(v_complete_str1 = 0
9984 v_complete_str := LENGTH(v_lce_text);
9985 v_end_delim_str := NULL;
9986 END IF;
9987
9988 v_search_str := NULL;
9989 v_search_str := LTRIM(RTRIM(SUBSTR(v_lce_text, 1, v_complete_str)));
9990
9991 IF (is_number(v_search_str)) THEN
9992 v_idx_number := TO_NUMBER(v_search_str);
9993 BEGIN
9994 v_rep_idx_no := cz_pb_mgr.v_cz_intl_text_idx_ref(v_idx_number);
9995 EXCEPTION
9996 WHEN NO_DATA_FOUND THEN
9997 CZ_PB_MGR.v_err_message := 'Failure in resolving '||p_column||': '||v_search_str;
9998 CZ_PB_MGR.error_msg_populate(CZ_PB_MGR.v_err_message ,'CZ_PB_MGR.LCETEXTS',SQLCODE);
9999 RAISE;
10000 END;
10001
10002 IF v_end_delim_str IS NULL THEN
10003 v_lce_text_str := substr(v_lce_text_str, 1, length(v_lce_text_str)-v_complete_str) || to_char(v_rep_idx_no);
10004 ELSE
10005 v_search_str := v_pattern || TO_CHAR(v_idx_number) || v_end_delim_str;
10006 v_replace_str := v_pattern || TO_CHAR(v_rep_idx_no) || v_end_delim_str;
10007 v_lce_text_str := REPLACE(v_lce_text_str, v_search_str, v_replace_str);
10008 END IF;
10009 END IF;
10010
10011 v_instr := INSTR(v_lce_text, p_pattern);
10012 END LOOP;
10013 END IF;
10014
10015 x_logic_text := v_lce_text_str;
10016 EXCEPTION
10017 WHEN OTHERS THEN
10018 cz_pb_mgr.v_err_message := 'Error during replacing ' || p_column || ' : ' || SQLERRM;
10019 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10020 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10021 RAISE;
10022 END replace_intl_texts;
10023
10024 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
10025 PROCEDURE insert_lce_load_specs(
10026 p_specs_attach_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10027 ,p_specs_lce_header_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10028 ,p_specs_required_expl_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10029 ,p_specs_attach_comp_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10030 ,p_specs_model_id_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10031 ,p_specs_net_type_ref IN OUT NOCOPY cz_pb_mgr.t_ref
10032 ,p_alias_name_ref IN OUT NOCOPY cz_pb_mgr.t_alias_name
10033 ,x_status IN OUT NOCOPY VARCHAR2
10034 )
10035 AS
10036 BEGIN
10037 IF (x_status <> PUBLICATION_ERROR)
10038 THEN
10039 IF (p_specs_model_id_ref.COUNT > 0)
10040 THEN
10041 EXECUTE IMMEDIATE 'BEGIN'
10042 || ' '
10046 || 'LOOP'
10043 || 'IF (cz_pb_mgr.v_specs_attach_expl_id_ref.COUNT > 0) THEN '
10044 || 'FOR I IN cz_pb_mgr.v_specs_attach_expl_id_ref.FIRST..cz_pb_mgr.v_specs_attach_expl_id_ref.LAST'
10045 || ' '
10047 || ' '
10048 || 'INSERT INTO cz_lce_load_specs'
10049 || cz_pb_mgr.v_db_link
10050 || '(ATTACHMENT_EXPL_ID'
10051 || ' '
10052 || ',LCE_HEADER_ID'
10053 || ' '
10054 || ',REQUIRED_EXPL_ID'
10055 || ' '
10056 || ',ATTACHMENT_COMP_ID'
10057 || ' '
10058 || ',MODEL_ID'
10059 || ' '
10060 || ',NET_TYPE'
10061 || ' '
10062 || ',alias_name'
10063 || ' '
10064 || ',DELETED_FLAG)'
10065 || ' '
10066 || 'values (cz_pb_mgr.v_specs_attach_expl_id_ref(i)'
10067 || ' '
10068 || ',cz_pb_mgr.v_specs_lce_header_id_ref(i)'
10069 || ' '
10070 || ',cz_pb_mgr.v_specs_required_expl_id_ref(i)'
10071 || ' '
10072 || ',cz_pb_mgr.v_specs_attach_comp_id_ref(i)'
10073 || ' '
10074 || ',cz_pb_mgr.v_specs_model_id_ref(i)'
10075 || ' '
10076 || ',cz_pb_mgr.v_specs_net_type_ref(i)'
10077 || ' '
10078 || ',cz_pb_mgr.v_specs_alias_name_ref(i)'
10079 || ' '
10080 || ',''0'''
10081 || ' '
10082 || ');'
10083 || ' '
10084 || 'END LOOP;'
10085 || 'END IF; '
10086 || ' '
10087 || 'END;';
10088
10089 COMMIT;
10090 END IF;
10091 END IF;
10092 EXCEPTION
10093 WHEN OTHERS
10094 THEN
10095 x_status := PUBLICATION_ERROR;
10096 cz_pb_mgr.v_err_message := 'Error during insert of lce_load_specs: ' || SQLERRM;
10097 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10098 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10099 RAISE;
10100 END insert_lce_load_specs;
10101
10102 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10103 --------copy data into cz_lce_headers
10104 PROCEDURE copy_lce_headers
10105 IS
10106 v_cz_lce_comp_id_tbl cz_pb_mgr.t_ref;
10107 v_cz_lce_expl_id_tbl cz_pb_mgr.t_ref;
10108 v_cz_lce_headers_new_tbl cz_pb_mgr.t_ref;
10109 v_cz_lce_headers_old_tbl cz_pb_mgr.t_ref;
10110 v_cz_lce_headers_comp_tbl cz_pb_mgr.t_ref;
10111 v_cz_lce_headers_expl_tbl cz_pb_mgr.t_ref;
10112 v_cz_lce_devl_id_tbl cz_pb_mgr.t_ref;
10113 v_specs_attach_expl_id_tbl cz_pb_mgr.t_ref;
10114 v_specs_lce_header_id_tbl cz_pb_mgr.t_ref;
10115 v_specs_required_expl_id_tbl cz_pb_mgr.t_ref;
10116 v_specs_attach_comp_id_tbl cz_pb_mgr.t_ref;
10117 v_specs_model_id_tbl cz_pb_mgr.t_ref;
10118 v_specs_net_type_tbl cz_pb_mgr.t_ref;
10119 plsql_table_list cz_pb_mgr.col_plsql_table_list;
10120 v_specs_alias_name_tbl cz_pb_mgr.t_alias_name;
10121 rec_count NUMBER := 0;
10122 resolution_status VARCHAR2(200);
10123 BEGIN
10124 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10125 THEN
10126 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
10127 THEN
10128 cz_pb_mgr.v_cz_lce_headers_new_ref.DELETE;
10129 cz_pb_mgr.v_cz_lce_headers_old_ref.DELETE;
10130 cz_pb_mgr.v_cz_lce_headers_idx_ref.DELETE;
10131 cz_pb_mgr.v_cz_lce_comp_id_ref.DELETE;
10132 cz_pb_mgr.v_cz_lce_expl_id_ref.DELETE;
10133 cz_pb_mgr.v_cz_lce_devl_id_ref.DELETE;
10134
10135 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10136 LOOP
10137 cz_pb_mgr.v_cz_lce_headers_new_tbl.DELETE;
10138 cz_pb_mgr.v_cz_lce_headers_old_tbl.DELETE;
10139 v_cz_lce_comp_id_tbl.DELETE;
10140 v_cz_lce_expl_id_tbl.DELETE;
10141
10142 BEGIN
10143 SELECT cz_pb_mgr.sequence_generate(cz_lce_headers_seq
10144 , 'cz_lce_headers_s.nextval' || cz_pb_mgr.v_db_link
10145 ,cz_pb_mgr.v_oraclesequenceincr
10146 )
10147 ,lce_header_id, component_id, model_ref_expl_id, devl_project_id
10148 BULK COLLECT INTO cz_pb_mgr.v_cz_lce_headers_new_tbl
10149 ,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
10150 FROM cz_lce_headers
10151 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;
10155 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
10152 EXCEPTION
10153 WHEN NO_DATA_FOUND
10154 THEN
10156 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10157 WHEN OTHERS
10158 THEN
10159 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
10160 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCE', SQLCODE);
10161 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10162 END;
10163
10164 rec_count := cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT;
10165
10166 IF (cz_pb_mgr.v_cz_lce_headers_new_tbl.COUNT > 0)
10167 THEN
10168 FOR k IN cz_pb_mgr.v_cz_lce_headers_new_tbl.FIRST .. cz_pb_mgr.v_cz_lce_headers_new_tbl.LAST
10169 LOOP
10170 rec_count := rec_count + 1;
10171 cz_pb_mgr.v_cz_lce_headers_new_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_new_tbl(k);
10172 cz_pb_mgr.v_cz_lce_headers_old_ref(rec_count) := cz_pb_mgr.v_cz_lce_headers_old_tbl(k);
10173 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);
10174 cz_pb_mgr.v_cz_lce_comp_id_ref(rec_count) := v_cz_lce_comp_id_tbl(k);
10175 cz_pb_mgr.v_cz_lce_expl_id_ref(rec_count) := v_cz_lce_expl_id_tbl(k);
10176 cz_pb_mgr.v_cz_lce_devl_id_ref(rec_count) := v_cz_lce_devl_id_tbl(k);
10177 END LOOP;
10178 END IF;
10179 END LOOP;
10180 END IF;
10181
10182 IF (cz_pb_mgr.v_cz_lce_headers_new_ref.COUNT > 0)
10183 THEN
10184 ------resolve component ids of cz lce headers
10185 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');
10186 -------resolve model ref expl id
10187 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');
10188 -------resolve model ref expl id
10189 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');
10190 ------------insert into cz lce headers
10191 plsql_table_list.DELETE;
10192 rec_count := 1;
10193 plsql_table_list(rec_count).col_name := 'lce_header_id';
10194 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_headers_new_ref';
10195 rec_count := rec_count + 1;
10196 plsql_table_list(rec_count).col_name := 'component_id';
10197 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_comp_id_ref';
10198 rec_count := rec_count + 1;
10199 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
10200 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_expl_id_ref';
10201 rec_count := rec_count + 1;
10202 plsql_table_list(rec_count).col_name := 'devl_project_id';
10203 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_lce_devl_id_ref';
10204 insert_into_table('cz_lce_headers'
10205 ,'lce_header_id'
10206 ,cz_pb_mgr.v_db_link
10207 ,plsql_table_list
10208 ,'cz_pb_mgr.v_cz_lce_headers_old_ref'
10209 ,cz_pb_mgr.v_cz_lce_headers_old_ref
10210 );
10211 ------insert data into cz_lce_load_specs
10212 clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
10213 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
10214 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
10215 LOOP
10216 BEGIN
10217 v_specs_attach_expl_id_tbl.DELETE;
10218 v_specs_lce_header_id_tbl.DELETE;
10219 v_specs_required_expl_id_tbl.DELETE;
10220 v_specs_attach_comp_id_tbl.DELETE;
10221 v_specs_model_id_tbl.DELETE;
10222 v_specs_net_type_tbl.DELETE;
10223 v_specs_alias_name_tbl.DELETE;
10224
10225 SELECT attachment_expl_id, lce_header_id, required_expl_id, attachment_comp_id
10226 ,model_id, net_type, alias_name
10227 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
10228 ,v_specs_model_id_tbl, v_specs_net_type_tbl, v_specs_alias_name_tbl
10229 FROM cz_lce_load_specs
10230 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;
10231 EXCEPTION
10232 WHEN NO_DATA_FOUND
10233 THEN
10234 NULL;
10235 WHEN OTHERS
10236 THEN
10237 RAISE no_load_specs_data;
10238 END;
10239
10240 rec_count := cz_pb_mgr.v_specs_model_id_ref.COUNT;
10241
10242 IF (v_specs_model_id_tbl.COUNT > 0)
10243 THEN
10244 FOR loadspeccount IN v_specs_model_id_tbl.FIRST .. v_specs_model_id_tbl.LAST
10245 LOOP
10246 rec_count := rec_count + 1;
10250 cz_pb_mgr.v_specs_attach_comp_id_ref(rec_count) := v_specs_attach_comp_id_tbl(loadspeccount);
10247 cz_pb_mgr.v_specs_attach_expl_id_ref(rec_count) := v_specs_attach_expl_id_tbl(loadspeccount);
10248 cz_pb_mgr.v_specs_lce_header_id_ref(rec_count) := v_specs_lce_header_id_tbl(loadspeccount);
10249 cz_pb_mgr.v_specs_required_expl_id_ref(rec_count) := v_specs_required_expl_id_tbl(loadspeccount);
10251 cz_pb_mgr.v_specs_model_id_ref(rec_count) := v_specs_model_id_tbl(loadspeccount);
10252 cz_pb_mgr.v_specs_net_type_ref(rec_count) := v_specs_net_type_tbl(loadspeccount);
10253 cz_pb_mgr.v_specs_alias_name_ref(rec_count) := v_specs_alias_name_tbl(loadspeccount);
10254 END LOOP;
10255 END IF;
10256 END LOOP;
10257 END IF;
10258
10259 --------resolve attachment expl id
10260 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');
10261 --------resolve lce_header id
10262 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');
10263 --------resolve required expl id
10264 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');
10265 --------resolve attachment comp id
10266 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');
10267 --------resolve model id
10268 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');
10269 insert_lce_load_specs(cz_pb_mgr.v_specs_attach_expl_id_ref
10270 ,cz_pb_mgr.v_specs_lce_header_id_ref
10271 ,cz_pb_mgr.v_specs_required_expl_id_ref
10272 ,cz_pb_mgr.v_specs_attach_comp_id_ref
10273 ,cz_pb_mgr.v_specs_model_id_ref
10274 ,cz_pb_mgr.v_specs_net_type_ref
10275 ,cz_pb_mgr.v_specs_alias_name_ref
10276 ,cz_pb_mgr.v_status_code
10277 );
10278 v_cz_lce_comp_id_tbl.DELETE;
10279 v_cz_lce_expl_id_tbl.DELETE;
10280 v_cz_lce_devl_id_tbl.DELETE;
10281 v_specs_attach_expl_id_tbl.DELETE;
10282 v_specs_lce_header_id_tbl.DELETE;
10283 v_specs_required_expl_id_tbl.DELETE;
10284 v_specs_attach_comp_id_tbl.DELETE;
10285 v_specs_model_id_tbl.DELETE;
10286 END IF;
10287 END IF; /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
10288 EXCEPTION
10289 WHEN no_load_specs_data
10290 THEN
10291 cz_pb_mgr.v_err_message := 'Error in retrieving data from cz_load_specs';
10292 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCELOADSPECS', SQLCODE);
10293 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10294 RAISE;
10295 WHEN OTHERS
10296 THEN
10297 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_headers', 'SQLERRM', SQLERRM);
10298 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCEHDRS', SQLCODE);
10299 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10300 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10301 RAISE;
10302 END copy_lce_headers;
10303
10304 -- used only when rules not copied in publication
10305 PROCEDURE get_rule_intl_text_ids(x_text_id_tbl OUT NOCOPY CZ_PB_MGR.t_ref)
10306 IS
10307 l_text_id_tbl CZ_PB_MGR.t_ref;
10308 l_counter PLS_INTEGER := 0;
10309 BEGIN
10310 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
10311 l_text_id_tbl.DELETE;
10312 SELECT intl_text_id BULK COLLECT INTO l_text_id_tbl
10313 FROM cz_intl_texts
10314 WHERE model_id = cz_pb_mgr.v_models_to_be_exported(i)
10315 AND deleted_flag = '0' AND (seeded_flag IS NULL OR seeded_flag = '0')
10316 AND intl_text_id IN (SELECT reason_id
10317 FROM cz_rules
10318 WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
10319 AND deleted_flag = '0' AND reason_id IS NOT NULL
10320 UNION ALL
10321 SELECT unsatisfied_msg_id
10322 FROM cz_rules
10323 WHERE devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
10324 AND deleted_flag = '0' AND unsatisfied_msg_id IS NOT NULL);
10325 IF l_text_id_tbl.COUNT > 0 THEN
10326 FOR j IN l_text_id_tbl.FIRST .. l_text_id_tbl.LAST LOOP
10327 l_counter := l_counter + 1;
10328 x_text_id_tbl(l_counter) := l_text_id_tbl(j);
10329 END LOOP;
10330 END IF;
10331 END LOOP;
10332 END get_rule_intl_text_ids;
10333
10334 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10335 ---------procedure to copy data into cz_lce_texts
10336 ---------reason ids and unsatisfied message ids of cz rules
10337 ---------are copied and resolved in this procedure
10338 ---------
10339 PROCEDURE copy_lce_texts(p_copy_rules_flag IN VARCHAR2)
10340 IS
10341 TYPE lce_text_ref IS TABLE OF VARCHAR2(4000)
10342 INDEX BY BINARY_INTEGER;
10343
10347 v_text_hdr_tbl cz_pb_mgr.t_ref;
10344 v_text_hdr_ref cz_pb_mgr.t_ref;
10345 v_text_seq_ref cz_pb_mgr.t_ref;
10346 v_lce_text_ref lce_text_ref;
10348 v_text_seq_tbl cz_pb_mgr.t_ref;
10349 v_lce_text_tbl cz_pb_mgr.lcetexttype;
10350 v_text_hdr_new_ref cz_pb_mgr.t_ref;
10351 v_text_seq_new_ref cz_pb_mgr.t_ref;
10352 v_lce_text_new_ref cz_pb_mgr.lcetexttype;
10353 record_count PLS_INTEGER;
10354 seq_nbr PLS_INTEGER;
10355 return_position PLS_INTEGER;
10356 rec_count NUMBER;
10357 l_text_id_tbl CZ_PB_MGR.t_ref;
10358 BEGIN
10359 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
10360 THEN
10361 IF (cz_pb_mgr.v_cz_lce_headers_old_ref.COUNT > 0)
10362 THEN
10363 v_text_hdr_ref.DELETE;
10364 v_text_seq_ref.DELETE;
10365 v_lce_text_ref.DELETE;
10366
10367 FOR i IN cz_pb_mgr.v_cz_lce_headers_old_ref.FIRST .. cz_pb_mgr.v_cz_lce_headers_old_ref.LAST
10368 LOOP
10369 BEGIN
10370 v_text_hdr_tbl.DELETE;
10371 v_text_seq_tbl.DELETE;
10372 v_lce_text_tbl.DELETE;
10373
10374 SELECT lce_header_id, seq_nbr, lce_text
10375 BULK COLLECT INTO v_text_hdr_tbl, v_text_seq_tbl, v_lce_text_tbl
10376 FROM cz_lce_texts
10377 WHERE cz_lce_texts.lce_header_id = cz_pb_mgr.v_cz_lce_headers_old_ref(i)
10378 ORDER BY lce_header_id, seq_nbr;
10379 EXCEPTION
10380 WHEN NO_DATA_FOUND
10381 THEN
10382 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10383 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
10384 WHEN OTHERS
10385 THEN
10386 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10387 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
10388 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10389 END;
10390
10391 rec_count := v_text_hdr_ref.COUNT;
10392
10393 IF (v_text_hdr_tbl.COUNT > 0)
10394 THEN
10395 FOR j IN v_text_hdr_tbl.FIRST .. v_text_hdr_tbl.LAST
10396 LOOP
10397 rec_count := rec_count + 1;
10398 v_text_hdr_ref(rec_count) := v_text_hdr_tbl(j);
10399 v_text_seq_ref(rec_count) := v_text_seq_tbl(j);
10400 v_lce_text_ref(rec_count) := v_lce_text_tbl(j);
10401 END LOOP;
10402 END IF;
10403 END LOOP;
10404 END IF;
10405
10406 IF (v_text_hdr_ref.COUNT > 0)
10407 THEN
10408 -------------Resolving lce header id
10409 resolve_ids(v_text_hdr_ref, cz_pb_mgr.v_cz_lce_headers_idx_ref, 'lce header id of cz lce texts');
10410 END IF;
10411
10412 -------replace reason ids in lce text
10413 IF (v_lce_text_ref.COUNT > 0) THEN
10414 -- insert intl text records and populate text id lookup map if rules are not copied in publication
10415 IF UPPER(NVL(p_copy_rules_flag, 'YES')) <> 'YES' THEN
10416 get_rule_intl_text_ids(l_text_id_tbl);
10417 insert_intl_texts(l_text_id_tbl,'Reason and unsatisfied msg ids of rules');
10418 END IF;
10419
10420 FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
10421 LOOP
10422 replace_intl_texts(v_lce_text_ref(j), reasonid, 'REASONID', v_lce_text_ref(j));
10423 END LOOP;
10424 END IF;
10425
10426 ----replace unsatisfied message ids
10427 IF (v_lce_text_ref.COUNT > 0)
10428 THEN
10429 FOR j IN v_lce_text_ref.FIRST .. v_lce_text_ref.LAST
10430 LOOP
10431 replace_intl_texts(v_lce_text_ref(j), unmsgid, 'UNSATMSGID', v_lce_text_ref(j));
10432 END LOOP;
10433 END IF;
10434
10435 IF (v_text_hdr_ref.COUNT > 0)
10436 THEN
10437 record_count := 0;
10438 seq_nbr := 0;
10439
10440 FOR i IN v_text_hdr_ref.FIRST .. v_text_hdr_ref.LAST
10441 LOOP
10442 record_count := record_count + 1;
10443 seq_nbr := seq_nbr + 1;
10444
10445 IF (v_text_seq_ref(i) = 1)
10446 THEN
10447 seq_nbr := 1;
10448 END IF;
10449
10450 IF (LENGTH(v_lce_text_ref(i)) > 2000)
10451 THEN
10452 v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
10453 v_text_seq_new_ref(record_count) := seq_nbr;
10454 v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, 2000);
10455 return_position := INSTR(v_lce_text_new_ref(record_count), pbnewline, -1);
10456 v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), 1, return_position);
10457 record_count := record_count + 1;
10458 seq_nbr := seq_nbr + 1;
10459 v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
10460 v_text_seq_new_ref(record_count) := seq_nbr;
10461 v_lce_text_new_ref(record_count) := SUBSTR(v_lce_text_ref(i), return_position + 1);
10465 v_lce_text_new_ref(record_count) := v_lce_text_ref(i);
10462 ELSE
10463 v_text_hdr_new_ref(record_count) := v_text_hdr_ref(i);
10464 v_text_seq_new_ref(record_count) := seq_nbr;
10466 END IF;
10467 END LOOP;
10468 END IF;
10469
10470 IF (v_text_hdr_new_ref.COUNT > 0)
10471 THEN
10472 FOR i IN v_text_hdr_new_ref.FIRST .. v_text_hdr_new_ref.LAST
10473 LOOP
10474 BEGIN
10475 EXECUTE IMMEDIATE 'INSERT INTO cz_lce_texts'
10476 || cz_pb_mgr.v_db_link
10477 || '( LCE_HEADER_ID'
10478 || ' '
10479 || ',SEQ_NBR'
10480 || ' '
10481 || ',LCE_TEXT'
10482 || ' '
10483 || ')'
10484 || ' '
10485 || 'VALUES (:1,:2,:3)'
10486 USING v_text_hdr_new_ref(i), v_text_seq_new_ref(i), v_lce_text_new_ref(i);
10487
10488 COMMIT;
10489 EXCEPTION
10490 WHEN OTHERS
10491 THEN
10492 ROLLBACK;
10493 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10494 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LCETEXTS', SQLCODE);
10495 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10496 END;
10497 END LOOP;
10498
10499 COMMIT;
10500 END IF;
10501
10502 v_text_hdr_ref.DELETE;
10503 v_text_seq_ref.DELETE;
10504 v_lce_text_ref.DELETE;
10505 v_text_hdr_tbl.DELETE;
10506 v_text_seq_tbl.DELETE;
10507 v_lce_text_tbl.DELETE;
10508 END IF; /* end if of cz_pb_mgr.v_status_code <> PUBLICATION_ERROR */
10509 EXCEPTION
10510 WHEN OTHERS
10511 THEN
10512 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_lce_texts', 'SQLERRM', SQLERRM);
10513 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.COPYLCETEXTS', SQLCODE);
10514 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
10515 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10516 RAISE;
10517 END;
10518
10519 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10520 ---------the installed or base languages on the source and the target instance
10521 ---------must be the same.
10522 PROCEDURE pb_language_check
10523 IS
10524 lang_cv ref_cursor;
10525 lang_index NUMBER := 0.0;
10526 BEGIN
10527 cz_pb_mgr.v_src_lang_code_tbl.DELETE;
10528
10529 BEGIN
10530 SELECT UPPER(language_code)
10531 BULK COLLECT INTO cz_pb_mgr.v_src_lang_code_tbl
10532 FROM fnd_languages
10533 WHERE fnd_languages.installed_flag IN('B', 'I')
10534 ORDER BY UPPER(language_code);
10535 EXCEPTION
10536 WHEN OTHERS
10537 THEN
10538 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
10539 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10540 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10541 cz_pb_mgr.global_export_retcode := 2;
10542 END;
10543
10544 cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
10545
10546 BEGIN
10547 OPEN lang_cv FOR 'SELECT UPPER(language_code)'
10548 || ' '
10549 || 'FROM fnd_languages'
10550 || cz_pb_mgr.v_db_link
10551 || ' '
10552 || 'WHERE fnd_languages.installed_flag IN (''B'', ''I'')'
10553 || ' '
10554 || 'ORDER BY UPPER(language_code)';
10555
10556 lang_index := 1;
10557
10558 LOOP
10559 FETCH lang_cv
10560 INTO cz_pb_mgr.v_tgt_lang_code_tbl(lang_index);
10561
10562 EXIT WHEN lang_cv%NOTFOUND;
10563 lang_index := lang_index + 1;
10564 END LOOP;
10565 EXCEPTION
10566 WHEN OTHERS
10567 THEN
10568 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
10569 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10570 cz_pb_mgr.v_status_code := 'ERR';
10571 cz_pb_mgr.global_export_retcode := 2;
10572 END;
10573
10574 IF ( (cz_pb_mgr.v_src_lang_code_tbl.COUNT > 0)
10575 AND (cz_pb_mgr.v_tgt_lang_code_tbl.COUNT > 0)
10576 AND (cz_pb_mgr.v_src_lang_code_tbl.COUNT = cz_pb_mgr.v_tgt_lang_code_tbl.COUNT)
10577 )
10578 THEN
10579 FOR l IN cz_pb_mgr.v_src_lang_code_tbl.FIRST .. cz_pb_mgr.v_src_lang_code_tbl.LAST
10580 LOOP
10581 IF (cz_pb_mgr.v_src_lang_code_tbl(l) <> cz_pb_mgr.v_tgt_lang_code_tbl(l))
10582 THEN
10583 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_SRC_TGT_LANG', 'LANGUAGE', cz_pb_mgr.v_tgt_lang_code_tbl(l));
10584 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10588 END LOOP;
10585 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10586 cz_pb_mgr.global_export_retcode := 2;
10587 END IF;
10589 ELSE
10590 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_LANG');
10591 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SRCLANG', SQLCODE);
10592 cz_pb_mgr.v_status_code := 'ERR';
10593 cz_pb_mgr.global_export_retcode := 2;
10594 END IF;
10595
10596 cz_pb_mgr.v_src_lang_code_tbl.DELETE;
10597 cz_pb_mgr.v_tgt_lang_code_tbl.DELETE;
10598 END pb_language_check;
10599 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10600 -----procedure to fix bug# 2759486 When copies of models exist
10601 -----there could be many projects with the same persistent_node_id
10602 -----So we need persistent_node_id and its associated project for resolving child_model_expl_id
10603 -----of model ref expls.
10604 PROCEDURE get_pers_prj_id(
10605 p_ref_node IN cz_ps_nodes.ps_node_id%TYPE
10606 ,x_pers_node_id OUT NOCOPY cz_ps_nodes.ps_node_id%TYPE
10607 ,x_prj_id OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
10608 )
10609 IS
10610 BEGIN
10611 SELECT persistent_node_id, devl_project_id
10612 INTO x_pers_node_id, x_prj_id
10613 FROM cz_ps_nodes t
10614 WHERE t.ps_node_id = p_ref_node AND t.deleted_flag = '0';
10615 EXCEPTION
10616 WHEN OTHERS
10617 THEN
10618 cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ref_node;
10619 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.get_pers_prj_id', SQLCODE);
10620 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
10621 RAISE;
10622 END;
10623
10624 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10625 -------procedure retrieves the project id of a ps node
10626 PROCEDURE get_devl_project_id(
10627 p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
10628 ,x_devl_project_id IN OUT NOCOPY cz_ps_nodes.devl_project_id%TYPE
10629 ,x_status IN OUT NOCOPY VARCHAR2
10630 )
10631 AS
10632 BEGIN
10633 IF (x_status <> PUBLICATION_ERROR)
10634 THEN
10635 SELECT devl_project_id
10636 INTO x_devl_project_id
10637 FROM cz_ps_nodes
10638 WHERE cz_ps_nodes.ps_node_id = p_ps_node_id AND cz_ps_nodes.deleted_flag = '0';
10639 END IF;
10640 EXCEPTION
10641 WHEN OTHERS
10642 THEN
10643 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;
10644 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
10645 x_status := PUBLICATION_ERROR;
10646 RAISE;
10647 END;
10648
10649 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10650 -------procedure that retrieves persistent node id
10651 PROCEDURE get_persistent_node_id(
10652 p_ps_node_id IN cz_ps_nodes.ps_node_id%TYPE
10653 ,x_persistent_id IN OUT NOCOPY cz_ps_nodes.persistent_node_id%TYPE
10654 ,x_status IN OUT NOCOPY VARCHAR2
10655 )
10656 AS
10657 BEGIN
10658 IF (x_status <> PUBLICATION_ERROR)
10659 THEN
10660 SELECT persistent_node_id
10661 INTO x_persistent_id
10662 FROM cz_ps_nodes t
10663 WHERE t.ps_node_id = p_ps_node_id AND t.deleted_flag = '0';
10664 END IF;
10665 EXCEPTION
10666 WHEN OTHERS
10667 THEN
10668 cz_pb_mgr.v_err_message := 'Error in retrieving persistent_node_id from cz ps nodes for ps node id: ' || p_ps_node_id;
10669 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
10670 x_status := PUBLICATION_ERROR;
10671 RAISE;
10672 END;
10673
10674 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10675 -------procedure retrieves the component id
10676 PROCEDURE remote_component_id(
10677 p_resolved_key_value IN OUT NOCOPY NUMBER
10678 ,p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
10679 ,p_server_id IN cz_servers.server_local_id%TYPE
10680 ,x_status IN OUT NOCOPY VARCHAR2
10681 )
10682 AS
10683 BEGIN
10684 IF (x_status <> PUBLICATION_ERROR)
10685 THEN
10686 IF (p_model_not_exported_array.COUNT > 0)
10687 THEN
10688 FOR j IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
10689 LOOP
10690 IF (p_resolved_key_value = p_model_not_exported_array(j)) THEN
10691 get_remote_model_id(p_server_id, p_resolved_key_value, x_status, p_resolved_key_value);
10692 EXIT;
10693 END IF;
10694 END LOOP;
10695 END IF;
10696 END IF;
10697 EXCEPTION
10698 WHEN OTHERS
10699 THEN
10700 cz_pb_mgr.v_err_message := 'Error in retrieving remote component from pb model exports: ' || SQLERRM;
10701 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETDEVLPROJID', SQLCODE);
10702 x_status := PUBLICATION_ERROR;
10703 RAISE;
10704 END;
10705
10706 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
10707 -------procedure that resolves remote reference nodes
10708 PROCEDURE resolve_ref_ids_not_found(
10709 p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref
10710 ,p_resolving_key_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
10711 ,p_resolving_key_new_idx_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
10715 )
10712 ,p_resolved_key_array IN OUT NOCOPY cz_pb_mgr.t_ref
10713 ,p_column_name IN VARCHAR2
10714 ,x_status IN OUT NOCOPY VARCHAR2
10716 AS
10717 ref_node_found BOOLEAN := FALSE;
10718 v_node_id NUMBER := 0.0;
10719 child_ref_id_cv ref_cursor;
10720 v_ref_project cz_devl_projects.devl_project_id%TYPE;
10721 v_ref_remote_model cz_devl_projects.devl_project_id%TYPE;
10722 v_child_expl_id cz_model_ref_expls.model_ref_expl_id%TYPE;
10723 v_persistent_node_id cz_ps_nodes.persistent_node_id%TYPE;
10724 v_source_child_model cz_model_ref_expls.model_id%TYPE;
10725 v_child_ref_node cz_ps_nodes.ps_node_id%TYPE;
10726 v_ref_model_id cz_model_ref_expls.model_id%TYPE;
10727 BEGIN
10728 IF (x_status <> PUBLICATION_ERROR)
10729 THEN
10730 IF (p_master_keys_array.COUNT > 0)
10731 THEN
10732 FOR i IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
10733 LOOP
10734 ref_node_found := FALSE;
10735
10736 IF (p_resolved_key_array(i) IS NOT NULL)
10737 THEN
10738 BEGIN
10739 p_resolved_key_array(i) := p_resolving_key_new_idx_array(p_resolved_key_array(i));
10740 ref_node_found := TRUE;
10741 EXCEPTION
10742 WHEN NO_DATA_FOUND
10743 THEN
10744 ref_node_found := FALSE;
10745 WHEN OTHERS
10746 THEN
10747 RAISE;
10748 END;
10749
10750 v_node_id := p_resolved_key_array(i);
10751 v_ref_project := 0;
10752 v_source_child_model := 0;
10753 v_child_ref_node := 0;
10754 v_persistent_node_id := 0;
10755 v_ref_model_id := 0;
10756
10757 IF (NOT ref_node_found)
10758 THEN
10759 IF (p_column_name = 'cz_model_ref_expl.referring_node_id')
10760 THEN
10761 get_devl_project_id(p_resolved_key_array(i), v_ref_project, cz_pb_mgr.v_status_code);
10762 get_remote_model_id(cz_pb_mgr.v_server_id, v_ref_project, cz_pb_mgr.v_status_code, v_ref_remote_model);
10763
10764 IF ((v_ref_project IS NOT NULL) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
10765 THEN
10766 OPEN child_ref_id_cv FOR 'SELECT model_ref_expl_id FROM cz_model_ref_expls'
10767 || cz_pb_mgr.v_db_link
10768 || ' t'
10769 || ' '
10770 || 'WHERE t.model_id = '
10771 || TO_CHAR(v_ref_remote_model)
10772 || ' '
10773 || 'AND node_depth = 0 ';
10774
10775 LOOP
10776 FETCH child_ref_id_cv
10777 INTO v_child_expl_id;
10778
10779 EXIT WHEN child_ref_id_cv%NOTFOUND;
10780 END LOOP;
10781
10782 CLOSE child_ref_id_cv;
10783
10784 OPEN child_ref_id_cv FOR 'SELECT model_id'
10785 || ' '
10786 || 'FROM cz_model_ref_expls'
10787 || cz_pb_mgr.v_db_link
10788 || ' t'
10789 || ' '
10790 || 'WHERE t.model_ref_expl_id = '
10791 || TO_CHAR(v_child_expl_id)
10792 || ' '
10793 || 'AND t.deleted_flag = ''0'' ';
10794
10795 LOOP
10796 FETCH child_ref_id_cv
10797 INTO v_ref_model_id;
10798
10799 EXIT WHEN child_ref_id_cv%NOTFOUND;
10800 END LOOP;
10801
10802 CLOSE child_ref_id_cv;
10803
10804 get_persistent_node_id(p_resolved_key_array(i), v_persistent_node_id, cz_pb_mgr.v_status_code);
10805
10806 OPEN child_ref_id_cv FOR 'SELECT ps_node_id FROM cz_ps_nodes'
10807 || cz_pb_mgr.v_db_link
10808 || ' t'
10809 || ' '
10810 || 'WHERE t.persistent_node_id = '
10811 || TO_CHAR(v_persistent_node_id)
10812 || ' '
10813 || 'AND t.devl_project_id = '
10814 || TO_CHAR(v_ref_model_id)
10815 || ' '
10816 || 'AND t.deleted_flag = ''0'' ';
10817
10818 LOOP
10819 FETCH child_ref_id_cv
10823 END LOOP;
10820 INTO p_resolved_key_array(i);
10821
10822 EXIT WHEN child_ref_id_cv%NOTFOUND;
10824
10825 CLOSE child_ref_id_cv;
10826 END IF;
10827 ELSIF(p_column_name = 'cz_model_ref_expl.child_expl_id')
10828 THEN
10829 IF cz_pb_mgr.v_session_parameter<>model_copy THEN
10830 BEGIN
10831 SELECT model_id, referring_node_id
10832 INTO v_source_child_model, v_child_ref_node
10833 FROM cz_model_ref_expls
10834 WHERE cz_model_ref_expls.model_ref_expl_id = p_resolved_key_array(i) AND cz_model_ref_expls.deleted_flag = '0';
10835 EXCEPTION
10836 WHEN OTHERS
10837 THEN
10838 v_child_ref_node := NULL;
10839 END;
10840
10841 IF (v_child_ref_node IS NOT NULL)
10842 THEN
10843 get_pers_prj_id(v_child_ref_node, v_persistent_node_id, v_source_child_model);
10844 get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
10845
10846 BEGIN
10847 OPEN child_ref_id_cv FOR 'SELECT ps_node_id'
10848 || ' '
10849 || 'FROM cz_ps_nodes'
10850 || cz_pb_mgr.v_db_link
10851 || ' t'
10852 || ' '
10853 || 'WHERE t.persistent_node_id = '
10854 || TO_CHAR(v_persistent_node_id)
10855 || ' '
10856 || 'AND t.devl_project_id = '
10857 || TO_CHAR(v_ref_remote_model)
10858 || ' '
10859 || 'AND t.deleted_flag = ''0'' ';
10860
10861 LOOP
10862 FETCH child_ref_id_cv
10863 INTO v_child_ref_node;
10864
10865 EXIT WHEN child_ref_id_cv%NOTFOUND;
10866 END LOOP;
10867
10868 CLOSE child_ref_id_cv;
10869 EXCEPTION
10870 WHEN NO_DATA_FOUND
10871 THEN
10872 cz_pb_mgr.v_err_message :=
10873 'NO remote referring node id found for model :' || v_ref_remote_model || ' on server : ' || cz_pb_mgr.v_server_id;
10874 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODREF', SQLCODE);
10875
10876 CLOSE child_ref_id_cv;
10877 WHEN OTHERS
10878 THEN
10879 CLOSE child_ref_id_cv;
10880 END;
10881 ELSE
10882 get_remote_model_id(cz_pb_mgr.v_server_id, v_source_child_model, cz_pb_mgr.v_status_code, v_ref_remote_model);
10883 END IF;
10884
10885 IF ((v_child_ref_node > 0) AND(v_source_child_model > 0) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
10886 THEN
10887 BEGIN
10888 OPEN child_ref_id_cv FOR 'SELECT model_ref_expl_id'
10889 || ' '
10890 || 'FROM cz_model_ref_expls'
10891 || cz_pb_mgr.v_db_link
10892 || ' t'
10893 || ' '
10894 || 'WHERE t.model_id = '
10895 || TO_CHAR(v_ref_remote_model)
10896 || ' '
10897 || 'AND t.referring_node_id = '
10898 || TO_CHAR(v_child_ref_node);
10899
10900 LOOP
10901 FETCH child_ref_id_cv
10902 INTO p_resolved_key_array(i);
10903
10904 EXIT WHEN child_ref_id_cv%NOTFOUND;
10905 END LOOP;
10906
10907 CLOSE child_ref_id_cv;
10908 EXCEPTION
10909 WHEN OTHERS
10910 THEN
10911 CLOSE child_ref_id_cv;
10912 END;
10913 ELSE
10914 BEGIN
10915 OPEN child_ref_id_cv FOR 'SELECT model_ref_expl_id'
10916 || ' '
10917 || 'FROM cz_model_ref_expls'
10921 || 'WHERE t.model_id = '
10918 || cz_pb_mgr.v_db_link
10919 || ' t'
10920 || ' '
10922 || TO_CHAR(v_ref_remote_model)
10923 || ' '
10924 || 'AND t.node_depth = 0';
10925
10926 LOOP
10927 FETCH child_ref_id_cv
10928 INTO p_resolved_key_array(i);
10929
10930 EXIT WHEN child_ref_id_cv%NOTFOUND;
10931 END LOOP;
10932
10933 CLOSE child_ref_id_cv;
10934 EXCEPTION
10935 WHEN OTHERS
10936 THEN
10937 CLOSE child_ref_id_cv;
10938 END;
10939 END IF;
10940 END IF;
10941 ELSIF(p_column_name = 'cz_model_ref_expl.component_id')
10942 THEN
10943 remote_component_id(p_resolved_key_array(i)
10944 ,cz_pb_mgr.v_models_not_to_be_exported
10945 ,cz_pb_mgr.v_server_id
10946 ,cz_pb_mgr.v_status_code
10947 );
10948 ELSIF(p_column_name IN
10949 ('cz_ui_nodes.ui_def_ref_id'
10950 ,'cz_ui_refs.ref_ui_def_id'
10951 ,'cz_ui_page_refs.target_ui_def_id'
10952 ,'cz_ui_page_elements.target_page_ui_def_id'
10953 ,'cz_ui_ref_templates.ref_template_ui_def_id'
10954 ,'cz_ui_actions.target_ui_def_id'
10955 )
10956 )
10957 THEN
10958 BEGIN
10959 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
10960 THEN
10961 OPEN child_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'
10962 || cz_pb_mgr.v_db_link
10963 || ' '
10964 || 'WHERE name = (SELECT name FROM cz_ui_defs t'
10965 || ' '
10966 || 'WHERE t.ui_def_id = '
10967 || p_resolved_key_array(i)
10968 || ')'
10969 || ' '
10970 || 'AND devl_project_id = :1'
10971 USING v_ref_remote_model;
10972 LOOP
10973 FETCH child_ref_id_cv
10974 INTO p_resolved_key_array(i);
10975
10976 EXIT WHEN child_ref_id_cv%NOTFOUND;
10977 END LOOP;
10978
10979 CLOSE child_ref_id_cv;
10980 ELSE
10981 OPEN child_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'
10982 || cz_pb_mgr.v_db_link
10983 || ' '
10984 || 'WHERE name = ( SELECT name FROM cz_ui_defs t'
10985 || ' '
10986 || 'WHERE t.ui_def_id = '
10987 || p_resolved_key_array(i)
10988 || ' )'
10989 || ' '
10990 || 'AND devl_project_id = :1'
10991 USING v_ref_remote_model;
10992 LOOP
10993 FETCH child_ref_id_cv
10994 INTO p_resolved_key_array(i);
10995
10996 EXIT WHEN child_ref_id_cv%NOTFOUND;
10997 END LOOP;
10998
10999 CLOSE child_ref_id_cv;
11000 END IF;
11001 EXCEPTION
11002 WHEN OTHERS
11003 THEN
11004 CLOSE child_ref_id_cv;
11005
11006 RAISE;
11007 END;
11008 END IF; /* end if of p_column name */
11009 END IF; /* end if of ref_not_found */
11010 END IF; /* end if of p_resolved_key_array */
11014 EXCEPTION
11011 END LOOP; /* end loop of p_master_keys_array */
11012 END IF; /*end if of p_master_keys_array */
11013 END IF; /* end if of x_status */
11015 WHEN OTHERS
11016 THEN
11017 cz_pb_mgr.v_err_message := 'Error in resolving : ' || p_column_name || ' for id ' || v_node_id || ' : ' || SQLERRM;
11018 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREFIDS', SQLCODE);
11019 x_status := PUBLICATION_ERROR;
11020 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11021 RAISE;
11022 END;
11023
11024 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11025 ------update reference ids of cz ps nodes of the remote model
11026 ------@p_models_exported -- root model and all its children
11027 ------@x_status --- publication status
11028 ------@p_server_id --- server local is of the target instance
11029 ------@p_new_ps_node_array --- ps node array that contains new values
11030 -- Note: do get_rem_nodes_of_models early, then we can remove this ugly method as well as some other bad ones
11031 PROCEDURE update_remote_reference_ids(
11032 p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11033 ,p_new_ps_node_array IN OUT NOCOPY cz_pb_mgr.t_ref
11034 ,p_server_id IN cz_servers.server_local_id%TYPE
11035 ,x_status IN OUT NOCOPY VARCHAR2
11036 )
11037 AS
11038 l_sql_string VARCHAR2(32000);
11039 l_remote_mode_id NUMBER;
11040 BEGIN
11041 IF (x_status <> PUBLICATION_ERROR)
11042 THEN
11043 IF (p_models_not_exported.COUNT > 0)
11044 THEN
11045 FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11046 LOOP
11047 IF (p_new_ps_node_array.COUNT > 0) THEN
11048 FOR j IN p_new_ps_node_array.FIRST .. p_new_ps_node_array.LAST
11049 LOOP
11050 IF (cz_pb_mgr.v_ps_refid_old_tbl(j) IS NOT NULL)
11051 THEN
11052 get_remote_model_id(p_server_id, p_models_not_exported(i), x_status, l_remote_mode_id);
11053 l_sql_string := 'UPDATE cz_ps_nodes'
11054 || cz_pb_mgr.v_db_link
11055 || ' SET reference_id=:1,component_id=:2'
11056 || ' WHERE deleted_flag=:3 AND ps_node_id=:4 AND reference_id=:5';
11057 EXECUTE IMMEDIATE l_sql_string
11058 USING l_remote_mode_id,l_remote_mode_id,record_not_deleted,p_new_ps_node_array(j),p_models_not_exported(i);
11059 END IF;
11060 END LOOP;
11061 END IF;
11062 END LOOP;
11063
11064 COMMIT WORK;
11065 END IF;
11066 END IF;
11067 EXCEPTION
11068 WHEN OTHERS
11069 THEN
11070 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REF_ID_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
11071 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11072 x_status := PUBLICATION_ERROR;
11073 RAISE;
11074 END;
11075
11076 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11077 --------procedure that resolves the virtual components of explosion records
11078 --------@p_model_ref_expls_ref :explosion array
11079 --------@p_models_not_exported :source models that are not exported
11080 --------@p_server_id :server local id of cz servers of the target instance
11081 --------@x_status :publication_status
11082 PROCEDURE resolve_virtual_components(
11083 p_model_ref_expls_ref IN OUT NOCOPY cz_pb_mgr.t_ref
11084 ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11085 ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
11086 ,x_status IN OUT NOCOPY VARCHAR2
11087 )
11088 AS
11089 rec_count PLS_INTEGER := 0;
11090 v_vrt_comp_id_tbl cz_pb_mgr.t_ref;
11091 v_vrt_comp_id_ref cz_pb_mgr.t_ref;
11092 virt_ref_id_cv ref_cursor;
11093 virt_model_id_cv ref_cursor;
11094 v_vir_remote_model_id NUMBER := 0.0;
11095 v_vir_devl_id NUMBER := 0.0;
11096 v_remote_comp_id NUMBER := 0.0;
11097 v_child_expl_id NUMBER := 0.0;
11098 v_vir_persistent_id cz_ps_nodes.persistent_node_id%TYPE;
11099 v_errored_model_id cz_devl_projects.devl_project_id%TYPE;
11100 BEGIN
11101 IF (x_status <> PUBLICATION_ERROR)
11102 THEN
11103 IF (p_models_not_exported.COUNT > 0)
11104 THEN
11105 v_vrt_comp_id_tbl.DELETE;
11106
11107 FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11108 LOOP
11109 v_errored_model_id := p_models_not_exported(i);
11110
11111 BEGIN
11112 SELECT component_id
11113 BULK COLLECT INTO v_vrt_comp_id_tbl
11114 FROM cz_model_ref_expls
11115 WHERE cz_model_ref_expls.model_id = p_models_not_exported(i)
11116 AND cz_model_ref_expls.virtual_flag = 0
11117 AND (cz_model_ref_expls.ps_node_type = non_virtual_component OR cz_model_ref_expls.ps_node_type = model_connector)
11118 AND cz_model_ref_expls.deleted_flag = record_not_deleted;
11119 EXCEPTION
11120 WHEN NO_DATA_FOUND
11121 THEN
11125 THEN
11122 cz_pb_mgr.v_err_message := 'No virtual components in the model : ' || TO_CHAR(p_models_not_exported(i));
11123 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11124 WHEN OTHERS
11126 cz_pb_mgr.v_err_message :=
11127 'Error in bulk collect of virtual components in the model : ' || TO_CHAR(p_models_not_exported(i)) || ' : '
11128 || SQLERRM;
11129 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.VIRCOMPL', SQLCODE);
11130 RAISE;
11131 END;
11132
11133 IF (v_vrt_comp_id_tbl.COUNT > 0)
11134 THEN
11135 rec_count := v_vrt_comp_id_ref.COUNT;
11136
11137 FOR j IN v_vrt_comp_id_tbl.FIRST .. v_vrt_comp_id_tbl.LAST
11138 LOOP
11139 rec_count := rec_count + 1;
11140 v_vrt_comp_id_ref(rec_count) := v_vrt_comp_id_tbl(j);
11141 END LOOP;
11142 END IF;
11143 END LOOP;
11144 END IF;
11145
11146 v_vir_persistent_id := 0;
11147 v_vir_devl_id := 0;
11148
11149 IF (v_vrt_comp_id_ref.COUNT > 0)
11150 THEN
11151 FOR i IN v_vrt_comp_id_ref.FIRST .. v_vrt_comp_id_ref.LAST
11152 LOOP
11153 BEGIN
11154 SELECT devl_project_id, persistent_node_id
11155 INTO v_vir_devl_id, v_vir_persistent_id
11156 FROM cz_ps_nodes
11157 WHERE ps_node_id = v_vrt_comp_id_ref(i);
11158 EXCEPTION
11159 WHEN OTHERS
11160 THEN
11161 v_vir_devl_id := 0;
11162 v_vir_persistent_id := 0;
11163 END;
11164
11165 v_vir_remote_model_id := 0;
11166
11167 IF (v_vir_devl_id > 0)
11168 THEN
11169 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);
11170 END IF;
11171
11172 cz_pb_mgr.v_remote_comp_id := 0;
11173
11174 IF (v_vir_remote_model_id > 0)
11175 THEN
11176 BEGIN
11177 OPEN virt_ref_id_cv FOR 'SELECT ps_node_id FROM cz_ps_nodes'
11178 || cz_pb_mgr.v_db_link
11179 || ' t'
11180 || ' '
11181 || 'WHERE t.devl_project_id = '
11182 || v_vir_remote_model_id
11183 || ' '
11184 || 'AND t.persistent_node_id = '
11185 || v_vir_persistent_id
11186 || ' '
11187 || 'AND t.deleted_flag = ''0'' ';
11188
11189 LOOP
11190 FETCH virt_ref_id_cv
11191 INTO v_remote_comp_id;
11192
11193 EXIT WHEN virt_ref_id_cv%NOTFOUND;
11194 END LOOP;
11195
11196 CLOSE virt_ref_id_cv;
11197 EXCEPTION
11198 WHEN OTHERS
11199 THEN
11200 CLOSE virt_ref_id_cv;
11201
11202 RAISE;
11203 END;
11204
11205 cz_pb_mgr.v_child_expl_id := NULL;
11206
11207 IF (v_remote_comp_id > 0)
11208 THEN
11209 BEGIN
11210 OPEN virt_model_id_cv FOR 'SELECT model_ref_expl_id'
11211 || ' '
11212 || 'FROM cz_model_ref_expls'
11213 || cz_pb_mgr.v_db_link
11214 || ' t'
11215 || ' '
11216 || 'WHERE t.model_id = '
11217 || v_vir_remote_model_id
11218 || ' '
11219 || 'AND t.component_id = '
11220 || v_remote_comp_id
11221 || ' '
11222 || 'AND t.deleted_flag = ''0'' ';
11223
11224 LOOP
11225 FETCH virt_model_id_cv
11226 INTO v_child_expl_id;
11227
11228 EXIT WHEN virt_model_id_cv%NOTFOUND;
11229 END LOOP;
11230
11231 CLOSE virt_model_id_cv;
11232 EXCEPTION
11233 WHEN OTHERS
11234 THEN
11235 CLOSE virt_model_id_cv;
11236
11237 RAISE;
11238 END;
11239
11240 IF (p_model_ref_expls_ref.COUNT > 0) THEN
11241 FOR z IN p_model_ref_expls_ref.FIRST .. p_model_ref_expls_ref.LAST
11245 || 'UPDATE cz_model_ref_expls'
11242 LOOP
11243 EXECUTE IMMEDIATE 'BEGIN '
11244 || ' '
11246 || cz_pb_mgr.v_db_link
11247 || ' t'
11248 || ' '
11249 || 'SET t.component_id = '
11250 || v_remote_comp_id
11251 || ' ,'
11252 || ' '
11253 || 't.child_model_expl_id = '
11254 || v_child_expl_id
11255 || ''
11256 || ' '
11257 || 'WHERE t.model_ref_expl_id = '
11258 || p_model_ref_expls_ref(z)
11259 || ''
11260 || ' '
11261 || 'AND t.component_id = '
11262 || v_vrt_comp_id_ref(i)
11263 || ''
11264 || ' '
11265 || 'AND t.deleted_flag = ''0'';'
11266 || ' '
11267 || 'COMMIT;'
11268 || ' '
11269 || 'END;';
11270 END LOOP;
11271 END IF;
11272 END IF; /* end if of cz_pb_mgr.v_remote_comp_id > 0 */
11273 END IF; /* end if of v_vir_remote_model_id > 0 */
11274 END LOOP;
11275
11276 v_vrt_comp_id_tbl.DELETE;
11277 v_vrt_comp_id_ref.DELETE;
11278 END IF; /* end if of v_vrt_comp_id_ref.COUNT > 0 */
11279 END IF; /* end if of x_status <> PUBLICATION_ERROR */
11280 EXCEPTION
11281 WHEN OTHERS
11282 THEN
11283 cz_pb_mgr.v_err_message := 'Error during resolution of non virtual component of source model : ' || v_errored_model_id || ' : ' || SQLERRM;
11284 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEVIRTCOMP', SQLCODE);
11285 x_status := PUBLICATION_ERROR;
11286 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11287 RAISE;
11288 END;
11289
11290
11291 -- Models with no change since the last successful export are not exported. Therefore their UIs
11292 -- are not exported as well. In such a case if a referring UI is exported, then the ids of referred UIs
11293 -- need to be resolved in these referring UIs. For that we need to map all referred UI Id from the
11294 -- source to corresponding remote Ids. This is exactly what this procedure does i.e. tt maps the
11295 -- source ui_def_ids to remote ui_def_ids in the table x_cz_ui_defs_idx_ref
11296 PROCEDURE get_uis_of_mdls_not_exported(p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref,
11297 x_cz_ui_defs_idx_ref IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2,
11298 p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE,
11299 x_status IN OUT NOCOPY VARCHAR2)
11300 AS
11301
11302 v_ui_defs_tbl cz_pb_mgr.t_ref;
11303
11304 ui_ref_id_cv REF_CURSOR;
11305 v_devl_project_id cz_devl_projects.devl_project_id%TYPE;
11306 v_remote_devl_project_id cz_devl_projects.devl_project_id%TYPE;
11307 v_remote_ui_def_id cz_ui_defs.ui_def_id%TYPE;
11308 v_name cz_ui_defs.name%TYPE;
11309 CANNOT_FIND_REMOTE_UI EXCEPTION;
11310
11311 BEGIN
11312
11313 IF (x_status <> PUBLICATION_ERROR) THEN
11314 IF (p_models_not_exported.COUNT > 0) THEN
11315 -- loop through all model that are not exported during this publishing session
11316 FOR I IN p_models_not_exported.FIRST..p_models_not_exported.LAST
11317 LOOP
11318 v_ui_defs_tbl.DELETE;
11319 v_devl_project_id := p_models_not_exported(i);
11320 get_remote_model_id(p_server_id,v_devl_project_id,x_status,v_remote_devl_project_id);
11321
11322 -- For each of these source models, get all the UIs
11323 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0) THEN
11324 SELECT ui_def_id BULK COLLECT INTO v_ui_defs_tbl
11325 FROM cz_ui_defs
11326 WHERE deleted_flag='0' AND devl_project_id=v_devl_project_id AND ui_style=g_ui_style_jrad;
11327 ELSE
11328 BEGIN
11329 SELECT ui_def_id
11330 BULK
11331 COLLECT
11332 INTO v_ui_defs_tbl
11333 FROM cz_ui_defs
11334 WHERE cz_ui_defs.devl_project_id = v_devl_project_id
11335 AND cz_ui_defs.deleted_flag = RECORD_NOT_DELETED
11336 AND cz_ui_defs.ui_style <> '-1';
11337
11338 EXCEPTION
11339 WHEN NO_DATA_FOUND THEN
11340 cz_pb_mgr.v_err_message := 'No ui_def_ids found for : '||to_char(v_devl_project_id);
11344 END;
11341 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED', SQLCODE);
11342 WHEN OTHERS THEN
11343 RAISE;
11345 END IF;
11346
11347 IF (v_ui_defs_tbl.COUNT > 0) THEN
11348 -- For each source UI, find the corresponding remote UI. We find the corresponding remote
11349 -- UI using the remote devl_project_id and name of the UI
11350 FOR K IN v_ui_defs_tbl.FIRST..v_ui_defs_tbl.LAST
11351 LOOP
11352 BEGIN
11353 SELECT name into v_name
11354 from cz_ui_defs
11355 where ui_def_Id = v_ui_defs_tbl(k)
11356 AND deleted_flag = RECORD_NOT_DELETED;
11357
11358 v_remote_ui_def_id := NULL;
11359 OPEN ui_ref_id_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'||CZ_PB_MGR.v_db_link ||
11360 ' WHERE name = :1 AND devl_project_id = :2' ||
11361 ' AND deleted_flag = :3'
11362 USING v_name, v_remote_devl_project_id, RECORD_NOT_DELETED;
11363 LOOP
11364 -- There is one problem here. If there is an extra UI on the source model
11365 -- then we wont find it on the remote model. This issue needs to be addressed.
11366 -- For now we just raise a CANNOT_FIND_REMOTE_UI exception in such a case
11367 FETCH ui_ref_id_cv INTO v_remote_ui_def_id;
11368 EXIT WHEN ui_ref_id_cv%NOTFOUND;
11369 END LOOP;
11370
11371 IF ( v_remote_ui_def_id IS NULL ) THEN
11372 cz_pb_mgr.v_err_message := 'Cannot find UI ' || v_name || ' for remote model ' || to_char(v_devl_project_id);
11373 log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.GETUISOFMDLSNOTEXPORTED',SQLCODE);
11374 RAISE CANNOT_FIND_REMOTE_UI;
11375 END IF;
11376
11377 CLOSE ui_ref_id_cv;
11378
11379 x_cz_ui_defs_idx_ref(v_ui_defs_tbl(k)) := v_remote_ui_def_id;
11380
11381 EXCEPTION
11382 WHEN OTHERS THEN
11383 CLOSE ui_ref_id_cv;
11384 RAISE;
11385 END;
11386 END LOOP;
11387 END IF;
11388 END LOOP; /* end loop of p_models_not_exported */
11389 END IF; /* end if of p_models_not_exported */
11390 END IF;
11391 END get_uis_of_mdls_not_exported;
11392
11393 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11394 --------Procedure to resolve remote ui nodes of cz_ui_nodes
11395 -- Note for model conversion, v_cz_ui_nodes_new_ref should be empty, otherwise there would be a problem here
11396 PROCEDURE resolve_remote_ui_nodes(
11397 p_master_keys_array IN OUT NOCOPY cz_pb_mgr.t_ref -- v_cz_ui_nodes_new_ref
11398 ,p_models_not_exported IN OUT NOCOPY cz_pb_mgr.t_ref
11399 ,p_resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref -- v_cz_ui_nodes_ui_ref_id_ref
11400 ,p_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
11401 ,x_status IN OUT NOCOPY VARCHAR2
11402 )
11403 AS
11404 v_remote_ui_defs_ref cz_pb_mgr.t_ref;
11405 v_remote_ui_defs_tbl cz_pb_mgr.t_ref;
11406 v_remote_ui_nodes_ref cz_pb_mgr.t_ref;
11407 v_remote_ui_nod_ui_def_ref cz_pb_mgr.t_ref;
11408 v_remote_ui_nodes_tbl cz_pb_mgr.t_ref;
11409 v_remote_ui_nod_ui_def_tbl cz_pb_mgr.t_ref;
11410 v_remote_pers_ui_node_tbl cz_pb_mgr.t_ref;
11411 v_remote_pers_ui_node_ref cz_pb_mgr.t_ref;
11412 ui_def_ref_id_cv ref_cursor;
11413 v_node_ref_proj_id cz_devl_projects.devl_project_id%TYPE;
11414 v_node_ref_export_id cz_pb_model_exports.export_id%TYPE;
11415 v_node_ref_remote_model cz_pb_model_exports.remote_model_id%TYPE;
11416 rec_count NUMBER;
11417
11418 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;
11419 l_ui_def_name cz_ui_defs.name%TYPE;
11420
11421 BEGIN
11422 IF (x_status <> PUBLICATION_ERROR)
11423 THEN
11424 IF (p_master_keys_array.COUNT > 0)
11425 THEN
11426 -- same thing already done in get_uis_of_mdls_not_exported!
11427 IF (p_models_not_exported.COUNT > 0)
11428 THEN
11429 v_remote_ui_defs_ref.DELETE;
11430
11431 FOR i IN p_models_not_exported.FIRST .. p_models_not_exported.LAST
11432 LOOP
11433 v_remote_ui_defs_tbl.DELETE;
11434
11435 BEGIN
11436 SELECT ui_def_id
11437 BULK COLLECT INTO v_remote_ui_defs_tbl
11438 FROM cz_ui_defs
11439 WHERE cz_ui_defs.devl_project_id = p_models_not_exported(i) AND cz_ui_defs.deleted_flag = record_not_deleted
11440 AND ui_style IN (g_ui_style_dhtml,g_ui_style_applet);
11441 EXCEPTION
11442 WHEN NO_DATA_FOUND
11443 THEN
11444 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));
11445 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEREMOTEUINODES', SQLCODE);
11446 WHEN OTHERS
11447 THEN
11448 RAISE;
11449 END;
11450
11451 rec_count := v_remote_ui_defs_ref.COUNT;
11452
11456 LOOP
11453 IF (v_remote_ui_defs_tbl.COUNT > 0)
11454 THEN
11455 FOR k IN v_remote_ui_defs_tbl.FIRST .. v_remote_ui_defs_tbl.LAST
11457 rec_count := rec_count + 1;
11458 v_remote_ui_defs_ref(rec_count) := v_remote_ui_defs_tbl(k);
11459 END LOOP;
11460 END IF;
11461 END LOOP; /* end loop of cz_pb_mgr.v_models_not_to_be_exported */
11462 END IF; /* end if of p_models_not_exported */
11463
11464 IF (v_remote_ui_defs_ref.COUNT > 0)
11465 THEN
11466 v_remote_ui_defs_tbl.DELETE;
11467 v_remote_ui_nodes_ref.DELETE;
11468 v_remote_ui_nod_ui_def_ref.DELETE;
11469
11470 FOR i IN v_remote_ui_defs_ref.FIRST .. v_remote_ui_defs_ref.LAST
11471 LOOP
11472 v_remote_ui_nodes_tbl.DELETE;
11473 v_remote_ui_nod_ui_def_tbl.DELETE;
11474
11475 BEGIN
11476 SELECT ui_node_id, ui_def_id, persistent_ui_node_id
11477 BULK COLLECT INTO v_remote_ui_nodes_tbl, v_remote_ui_nod_ui_def_tbl, v_remote_pers_ui_node_tbl
11478 FROM cz_ui_nodes
11479 WHERE cz_ui_nodes.ui_def_id = v_remote_ui_defs_ref(i) AND cz_ui_nodes.deleted_flag = '0'
11480 ORDER BY cz_ui_nodes.ui_node_id;
11481 EXCEPTION
11482 WHEN NO_DATA_FOUND
11483 THEN
11484 cz_pb_mgr.v_err_message := 'No ui_node_ids found ';
11485 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11486 WHEN OTHERS
11487 THEN
11488 cz_pb_mgr.v_err_message := 'Error in retrieving ui_node_ids for remote ui_node_refs ';
11489 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11490 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11491 END;
11492
11493 IF (v_remote_ui_nodes_tbl.COUNT > 0)
11494 THEN
11495 FOR j IN v_remote_ui_nodes_tbl.FIRST .. v_remote_ui_nodes_tbl.LAST
11496 LOOP
11497 rec_count := v_remote_ui_nodes_ref.COUNT + 1;
11498 v_remote_ui_nodes_ref(rec_count) := v_remote_ui_nodes_tbl(j);
11499 v_remote_ui_nod_ui_def_ref(rec_count) := v_remote_ui_nod_ui_def_tbl(j);
11500 v_remote_pers_ui_node_ref(rec_count) := v_remote_pers_ui_node_tbl(j);
11501 END LOOP;
11502 END IF; /* end if of v_remote_ui_nodes_tbl */
11503 END LOOP; /* end loop of v_remote_ui_defs_ref */
11504 END IF; /* end if of v_remote_ui_defs_ref */
11505
11506 IF (v_remote_ui_nodes_ref.COUNT > 0)
11507 THEN
11508 IF (p_master_keys_array.COUNT > 0) THEN
11509 FOR j IN p_master_keys_array.FIRST .. p_master_keys_array.LAST
11510 LOOP
11511 IF (p_resolved_array(j) IS NOT NULL)
11512 THEN
11513 FOR i IN v_remote_ui_nodes_ref.FIRST .. v_remote_ui_nodes_ref.LAST
11514 LOOP
11515 IF (p_resolved_array(j) = v_remote_ui_nodes_ref(i))
11516 THEN
11517 ---------get devl_project_id
11518 SELECT devl_project_id
11519 INTO v_node_ref_proj_id
11520 FROM cz_ui_defs
11521 WHERE ui_def_id = v_remote_ui_nod_ui_def_ref(i) AND cz_ui_defs.deleted_flag = '0';
11522
11523 get_remote_model_id(p_server_id,v_node_ref_proj_id,x_status,v_node_ref_remote_model);
11524
11525 OPEN l_ui_def_cur(v_remote_ui_nod_ui_def_ref(i));
11526 FETCH l_ui_def_cur INTO l_ui_def_name;
11527 CLOSE l_ui_def_cur;
11528
11529 OPEN ui_def_ref_id_cv FOR 'SELECT ui_node_id'
11530 || ' '
11531 || 'FROM cz_ui_nodes'
11532 || cz_pb_mgr.v_db_link
11533 || ' t'
11534 || ' '
11535 || 'WHERE t.persistent_ui_node_id = :pers_ui_node_id'
11536 || ' '
11537 || 'AND t.ui_def_id = (SELECT ui_def_id'
11538 || ' '
11539 || 'FROM cz_ui_defs'
11540 || cz_pb_mgr.v_db_link
11541 || ' a'
11542 || ' '
11543 || 'WHERE a.name = :ui_def_name'
11547 || 'AND t.deleted_flag = ''0'''
11544 || ' '
11545 || 'AND a.devl_project_id = :devl_project_id)'
11546 || ' '
11548 || ' '
11549 || 'AND ROWNUM < 2 '
11550 USING v_remote_pers_ui_node_ref(i), l_ui_def_name, v_node_ref_remote_model;
11551 LOOP
11552 FETCH ui_def_ref_id_cv
11553 INTO p_resolved_array(j);
11554
11555 EXIT WHEN ui_def_ref_id_cv%NOTFOUND;
11556 END LOOP;
11557
11558 CLOSE ui_def_ref_id_cv;
11559 END IF; /* end if of p_resolved_array(j) = v_remote_ui_nodes_ref(i) */
11560 END LOOP; /* end loop of FOR I IN v_remote_ui_nodes_ref */
11561 END IF; /* end if of p_resolved_array(j) IS NOT NULL */
11562 END LOOP; /* end loop of FOR J IN p_master_keys_array */
11563 END IF;
11564 END IF; /* end if of v_remote_ui_nodes_ref.COUNT > 0 */
11565 END IF; /* end if of (p_master_keys_array.COUNT > 0) */
11566 END IF; /* end if of x_status <> PUBLICATION_ERROR */
11567 EXCEPTION
11568 WHEN NO_DATA_FOUND
11569 THEN
11570 cz_pb_mgr.v_err_message := 'No ui_node_ref_ids found ';
11571 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11572
11573 CLOSE ui_def_ref_id_cv;
11574 WHEN OTHERS
11575 THEN
11576 cz_pb_mgr.v_err_message := 'Error in retrieving ui_nod_ref_ids ';
11577 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODREF', SQLCODE);
11578
11579 CLOSE ui_def_ref_id_cv;
11580
11581 x_status := PUBLICATION_ERROR;
11582 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11583 RAISE;
11584 END resolve_remote_ui_nodes;
11585
11586 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11587 --------------populate ps nodes pl/sql table with ps node ids from remote server
11588 --------------@p_model_not_exported_array: source models not exported
11589 --------------@p_ps_nodes_single_array : ps nodes single index array
11590 --------------@x_status : publication status parameter
11591 PROCEDURE get_rem_nodes_of_models(
11592 p_model_not_exported_array IN OUT NOCOPY cz_pb_mgr.t_ref
11593 ,p_ps_nodes_single_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
11594 ,x_status IN OUT NOCOPY VARCHAR2
11595 )
11596 AS
11597 remote_ps_count NUMBER;
11598 v_remote_models_tbl cz_pb_mgr.t_ref;
11599 v_rem_ps_nodes_ref cz_pb_mgr.t_ref;
11600 v_rem_pers_nodes_ref cz_pb_mgr.t_ref;
11601 v_src_ps_nodes_ref cz_pb_mgr.t_ref;
11602 remote_node_cv ref_cursor;
11603 v_remote_ps_node_id cz_ps_nodes.ps_node_id%TYPE;
11604 v_remote_pers_node_id cz_ps_nodes.persistent_node_id%TYPE;
11605 l_remote_model_id NUMBER;
11606 BEGIN
11607 IF (x_status <> PUBLICATION_ERROR) THEN
11608 IF (p_model_not_exported_array.COUNT > 0) THEN
11609 FOR k IN p_model_not_exported_array.FIRST .. p_model_not_exported_array.LAST
11610 LOOP
11611 BEGIN
11612 get_remote_model_id(cz_pb_mgr.v_server_id,p_model_not_exported_array(k),x_status,l_remote_model_id);
11613 v_remote_models_tbl(k):=l_remote_model_id;
11614 EXCEPTION
11615 WHEN OTHERS THEN
11616 cz_pb_mgr.v_err_message :=
11617 'No remote model found for source model: ' || p_model_not_exported_array(k)
11618 || ' on the remote server';
11619 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REMOTENODES', SQLCODE);
11620 x_status := PUBLICATION_ERROR;
11621 RAISE;
11622 END;
11623
11624 IF (v_remote_models_tbl(k) > 0) THEN
11625 OPEN remote_node_cv FOR 'SELECT ps_node_id,persistent_node_id'
11626 || ' '
11627 || 'FROM cz_ps_nodes'
11628 || cz_pb_mgr.v_db_link
11629 || ' t'
11630 || ' '
11631 || 'WHERE t.devl_project_id = '
11632 || v_remote_models_tbl(k)
11633 || ' '
11634 || 'AND t.deleted_flag = ''0'' ';
11635
11636 LOOP
11637 FETCH remote_node_cv
11638 INTO v_remote_ps_node_id, v_remote_pers_node_id;
11639
11640 EXIT WHEN remote_node_cv%NOTFOUND;
11641 remote_ps_count := v_rem_ps_nodes_ref.COUNT + 1;
11645 SELECT ps_node_id
11642 v_rem_ps_nodes_ref(remote_ps_count) := v_remote_ps_node_id;
11643 v_rem_pers_nodes_ref(remote_ps_count) := v_remote_pers_node_id;
11644
11646 INTO v_src_ps_nodes_ref(remote_ps_count)
11647 FROM cz_ps_nodes
11648 WHERE cz_ps_nodes.devl_project_id = p_model_not_exported_array(k)
11649 AND cz_ps_nodes.persistent_node_id = v_remote_pers_node_id
11650 AND cz_ps_nodes.deleted_flag = record_not_deleted;
11651 END LOOP;
11652
11653 CLOSE remote_node_cv;
11654 END IF; /* end if of (v_remote_models_tbl(k) > 0) */
11655 END LOOP; /* end loop of FOR k IN p_model_not_exported_array */
11656
11657 IF (v_rem_ps_nodes_ref.COUNT > 0)
11658 THEN
11659 FOR m IN v_rem_ps_nodes_ref.FIRST .. v_rem_ps_nodes_ref.LAST
11660 LOOP
11661 cz_pb_mgr.v_cz_ps_nodes_idx_tbl(v_src_ps_nodes_ref(m)):=v_rem_ps_nodes_ref(m);
11662 END LOOP;
11663 END IF; /* end if of (v_rem_ps_nodes_ref.COUNT > 0) */
11664 END IF; /* end if of (p_model_not_exported_array.COUNT > 0) */
11665 END IF; /* end if of x_status <> PUBLICATION_ERROR */
11666 EXCEPTION
11667 WHEN OTHERS
11668 THEN
11669 cz_pb_mgr.v_err_message := 'Error in retrieving remote ps node ids for source models not exported: ' || SQLERRM;
11670 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETREMNODES', SQLCODE);
11671
11672 CLOSE remote_node_cv;
11673
11674 x_status := PUBLICATION_ERROR;
11675 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11676 RAISE;
11677 END get_rem_nodes_of_models;
11678
11679 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11680 -----procedure inserts data into cz_ps_prop_vals for non-migration session
11681 -----@p_prop_vals_array: table of ps nodes
11682 -----@p_property_array : table of property ids
11683 -----@p_data_val_array : table of data values
11684 -----@x_status : publication status parameter
11685 PROCEDURE insert_into_ps_prop_vals
11686 AS
11687 BEGIN
11688 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
11689 THEN
11690 EXECUTE IMMEDIATE 'BEGIN'
11691 || ' '
11692 || 'cz_pb_mgr.v_expr_count := 0;'
11693 || ' '
11694 || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
11695 || ' '
11696 || 'LOOP'
11697 || ' '
11698 || 'cz_pb_mgr.v_propval_node_id := cz_pb_mgr.v_prop_vals_node_ref(i);'
11699 || ' '
11700 || 'cz_pb_mgr.v_propval_prop_id := cz_pb_mgr.v_prop_vals_prop_ref(i);'
11701 || ' '
11702 || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
11703 || ' '
11704 || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.v_prop_vals_data_num_ref(i);'
11705 || ' '
11706 || 'INSERT INTO cz_ps_prop_vals'
11707 || cz_pb_mgr.v_db_link
11708 || '('
11709 || ' '
11710 || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
11711 || ' '
11712 || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
11713 || ' '
11714 || '''0'',cz_pb_mgr.v_propval_data_num_value);'
11715 || ' '
11716 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
11717 || ' '
11718 || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
11719 || ' '
11720 || 'END IF;'
11721 || ' '
11722 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
11723 || ' '
11724 || 'END LOOP;'
11725 || ' '
11726 || 'END;';
11727 END IF;
11728
11729 COMMIT;
11730 EXCEPTION
11731 WHEN OTHERS
11732 THEN
11733 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
11734 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
11735 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11736 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11737 RAISE;
11738 END insert_into_ps_prop_vals;
11739
11740 --------------------------------------------------------------------------------
11741 -- used for model conversion
11742 -- ps node ids in v_prop_vals_node_ref and translatable text ids in v_prop_vals_data_num_ref
11743 -- are already resolved in upload_item_schema
11747
11744 PROCEDURE mc_insert_pspropvals IS
11745 BEGIN
11746 IF cz_pb_mgr.v_prop_vals_node_ref.COUNT=0 THEN RETURN; END IF;
11748 FOR i IN cz_pb_mgr.v_prop_vals_node_ref.FIRST .. cz_pb_mgr.v_prop_vals_node_ref.LAST LOOP
11749 IF cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsValue' OR cz_pb_mgr.v_prop_vals_valuesource_ref(i) = 'PsDflt' THEN
11750 INSERT INTO cz_ps_prop_vals(ps_node_id, property_id, data_value, data_num_value, deleted_flag)
11751 VALUES(cz_pb_mgr.v_prop_vals_node_ref(i), cz_pb_mgr.v_prop_vals_prop_ref(i),
11752 cz_pb_mgr.v_prop_vals_data_ref(i), cz_pb_mgr.v_prop_vals_data_num_ref(i), '0');
11753 END IF;
11754 END LOOP;
11755 COMMIT;
11756 EXCEPTION
11757 WHEN OTHERS THEN
11758 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
11759 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
11760 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11761 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
11762 RAISE;
11763 END mc_insert_pspropvals;
11764
11765 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11766 PROCEDURE insert_des_chart_features(x_status IN OUT NOCOPY VARCHAR2)
11767 AS
11768 BEGIN
11769 IF (x_status <> PUBLICATION_ERROR)
11770 THEN
11771 IF (cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT > 0)
11772 THEN
11773 cz_pb_mgr.v_expr_count := 0;
11774
11775 EXECUTE IMMEDIATE 'BEGIN'
11776 || ' '
11777 || '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'
11778 || ' '
11779 || 'LOOP'
11780 || ' '
11781 || 'INSERT INTO cz_des_chart_features'
11782 || cz_pb_mgr.v_db_link
11783 || '('
11784 || ' '
11785 || 'RULE_ID'
11786 || ' '
11787 || ',FEATURE_ID'
11788 || ' '
11789 || ',FEATURE_TYPE'
11790 || ' '
11791 || ',DELETED_FLAG'
11792 || ' '
11793 || ',MODEL_REF_EXPL_ID)'
11794 || ' '
11795 || 'VALUES (cz_pb_mgr.v_cz_des_feature_rid_new_ref(i)'
11796 || ' '
11797 || ',cz_pb_mgr.v_cz_des_feature_id_old_ref(i)'
11798 || ' '
11799 || ',cz_pb_mgr.v_cz_des_feature_ft_typ_ref(i)'
11800 || ' '
11801 || ',''0'''
11802 || ' '
11803 || ',cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(i)'
11804 || ' '
11805 || ');'
11806 || ' '
11807 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
11808 || ' '
11809 || 'COMMIT;'
11810 || ' '
11811 || 'cz_pb_mgr.v_expr_count := 0;'
11812 || ' '
11813 || 'END IF;'
11814 || ' '
11815 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
11816 || ' '
11817 || 'END LOOP;'
11818 || ' '
11819 || 'END;';
11820 END IF;
11821 END IF;
11822
11823 COMMIT;
11824 EXCEPTION
11825 WHEN OTHERS
11826 THEN
11827 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
11828 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_FEATURES', SQLCODE);
11829 x_status := PUBLICATION_ERROR;
11830 RAISE;
11831 END;
11832
11833 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11834 ------the new ids from v_cz_des_cells_rule_id_new_ref
11835 PROCEDURE insert_des_chart_cells(x_status IN OUT NOCOPY VARCHAR2)
11836 AS
11837 BEGIN
11838 IF (x_status <> PUBLICATION_ERROR)
11839 THEN
11840 IF (cz_pb_mgr.v_cz_des_cells_rule_id_old_ref.COUNT > 0)
11841 THEN
11842 cz_pb_mgr.v_expr_count := 0;
11843
11844 EXECUTE IMMEDIATE 'BEGIN'
11845 || ' '
11846 || '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'
11847 || ' '
11848 || 'LOOP'
11849 || ' '
11850 || 'INSERT INTO cz_des_chart_cells'
11851 || cz_pb_mgr.v_db_link
11852 || '('
11853 || ' '
11854 || 'RULE_ID'
11855 || ' '
11856 || ',PRIMARY_OPT_ID'
11857 || ' '
11861 || ' '
11858 || ',SECONDARY_OPT_ID'
11859 || ' '
11860 || ',MARK_CHAR'
11862 || ',DELETED_FLAG'
11863 || ' '
11864 || ',SECONDARY_FEAT_EXPL_ID'
11865 || ' '
11866 || ',SECONDARY_FEATURE_ID'
11867 || ' '
11868 || ')'
11869 || ' '
11870 || 'values ( cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(i)'
11871 || ' '
11872 || ',cz_pb_mgr.v_cz_des_cells_popt_id_ref(i)'
11873 || ' '
11874 || ',cz_pb_mgr.v_cz_des_cells_sopt_id_ref(i)'
11875 || ' '
11876 || ',cz_pb_mgr.v_cz_des_cells_mark_char_ref(i)'
11877 || ' '
11878 || ',''0'''
11879 || ' '
11880 || ',cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(i)'
11881 || ' '
11882 || ',cz_pb_mgr.v_cz_des_cells_sf_id_ref(i)'
11883 || ' '
11884 || ');'
11885 || ' '
11886 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
11887 || ' '
11888 || 'COMMIT;'
11889 || ' '
11890 || 'cz_pb_mgr.v_expr_count := 0;'
11891 || ' '
11892 || 'END IF;'
11893 || ' '
11894 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
11895 || ' '
11896 || 'END LOOP;'
11897 || ' '
11898 || 'END;';
11899 END IF;
11900 END IF;
11901
11902 COMMIT;
11903 EXCEPTION
11904 WHEN OTHERS
11905 THEN
11906 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
11907 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:CZ_DES_CHART_CELLS', SQLCODE);
11908 x_status := PUBLICATION_ERROR;
11909 RAISE;
11910 END;
11911
11912 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11913 PROCEDURE collect_func_comp_specs
11914 IS
11915 v_cz_func_devl_old_tbl cz_pb_mgr.t_ref;
11916 v_cz_func_cid_old_tbl cz_pb_mgr.t_ref;
11917 v_cz_func_expl_old_tbl cz_pb_mgr.t_ref;
11918 v_cz_func_fld_old_tbl cz_pb_mgr.t_ref;
11919 v_object_type_tbl cz_pb_mgr.objtype;
11920 rec_count NUMBER := 0;
11921 BEGIN
11922 IF (cz_pb_mgr.g_log_timing = publication_timing)
11923 THEN
11924 log_timing_message('start bulk collect of func comp specs');
11925 END IF;
11926
11927 clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
11928
11929 IF (cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0)
11930 THEN
11931 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
11932 LOOP
11933 clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
11934 v_cz_func_devl_old_tbl.DELETE;
11935 v_cz_func_cid_old_tbl.DELETE;
11936 v_cz_func_expl_old_tbl.DELETE;
11937 v_cz_func_fld_old_tbl.DELETE;
11938 v_object_type_tbl.DELETE;
11939
11940 BEGIN
11941 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_func_comp_specs_seq
11942 , 'cz_func_comp_specs_s.nextval' || cz_pb_mgr.v_db_link
11943 ,cz_pb_mgr.v_oraclesequenceincr
11944 )
11945 ,func_comp_id, devl_project_id, component_id, model_ref_expl_id
11946 ,rule_folder_id, 'FNC'
11947 BULK COLLECT INTO cz_pb_mgr.v_cz_func_comp_new_tbl
11948 ,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
11949 ,v_cz_func_fld_old_tbl, v_object_type_tbl
11950 FROM cz_func_comp_specs t
11951 WHERE t.model_ref_expl_id = cz_pb_mgr.v_cz_model_ref_expls_old_ref(i) AND t.deleted_flag = '0';
11952 EXCEPTION
11953 WHEN NO_DATA_FOUND
11954 THEN
11955 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
11956 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FUNCCOMP', SQLCODE);
11957 WHEN OTHERS
11958 THEN
11959 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_func_comp_specs', 'SQLERRM', SQLERRM);
11960 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
11961 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
11962 RAISE;
11963 END;
11964
11965 rec_count := cz_pb_mgr.v_cz_func_comp_new_ref.COUNT;
11966
11967 IF (cz_pb_mgr.v_cz_func_comp_new_tbl.COUNT > 0)
11968 THEN
11972 cz_pb_mgr.v_cz_func_comp_new_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_new_tbl(k);
11969 FOR k IN cz_pb_mgr.v_cz_func_comp_new_tbl.FIRST .. cz_pb_mgr.v_cz_func_comp_new_tbl.LAST
11970 LOOP
11971 rec_count := rec_count + 1;
11973 cz_pb_mgr.v_cz_func_comp_old_ref(rec_count) := cz_pb_mgr.v_cz_func_comp_old_tbl(k);
11974 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);
11975 cz_pb_mgr.v_cz_func_devl_old_ref(rec_count) := v_cz_func_devl_old_tbl(k);
11976 cz_pb_mgr.v_cz_func_cid_old_ref(rec_count) := v_cz_func_cid_old_tbl(k);
11977 cz_pb_mgr.v_cz_func_expl_old_ref(rec_count) := v_cz_func_expl_old_tbl(k);
11978 cz_pb_mgr.v_cz_func_fld_old_ref(rec_count) := v_cz_func_fld_old_tbl(k);
11979 cz_pb_mgr.v_cz_func_obj_ref(rec_count) := v_object_type_tbl(k);
11980 END LOOP;
11981 END IF;
11982 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_model_ref_expls_old_ref */
11983 END IF; /* end if of cz_pb_mgr.v_cz_model_ref_expls_old_ref.COUNT > 0 */
11984
11985 IF (cz_pb_mgr.g_log_timing = publication_timing)
11986 THEN
11987 log_timing_message('end bulk collect of func comp specs');
11988 END IF;
11989 EXCEPTION
11990 WHEN OTHERS
11991 THEN
11992 RAISE;
11993 END collect_func_comp_specs;
11994
11995 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
11996 -----procedure that bulk collects rules of projects
11997 ----@p_rules_flag : indicates if rules have to be copied while publishing
11998 ----@p_model_array : models to be copied
11999 ----@p_rules_old_array : tbl containing old rule ids
12000 ----@p_rules_new_array : tbl for new rules
12001 ----@p_rules_sng_array : table for single index implementation
12002 ----@x_status : publication status parameter
12003 PROCEDURE bulk_collect_rules(
12004 p_rules_flag IN VARCHAR2
12005 ,p_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
12006 ,p_rules_old_array IN OUT NOCOPY cz_pb_mgr.t_ref
12007 ,p_rules_new_array IN OUT NOCOPY cz_pb_mgr.t_ref
12008 ,p_rules_sng_array IN OUT NOCOPY cz_pb_mgr.t_ref_idx_vc2
12009 ,x_status IN OUT NOCOPY VARCHAR2
12010 )
12011 AS
12012 l_cz_rules_new_id_tbl cz_pb_mgr.t_ref;
12013 l_cz_rules_old_id_tbl cz_pb_mgr.t_ref;
12014 l_cz_rules_rf_id_tbl cz_pb_mgr.t_ref;
12015 l_cz_rules_proj_id_tbl cz_pb_mgr.t_ref;
12016 l_cz_rules_comp_id_tbl cz_pb_mgr.t_ref;
12017 l_cz_rules_rea_id_tbl cz_pb_mgr.t_ref;
12018 l_cz_rules_eff_id_tbl cz_pb_mgr.t_ref;
12019 l_cz_rules_unmsg_id_tbl cz_pb_mgr.t_ref;
12020 l_cz_rules_expl_id_tbl cz_pb_mgr.t_ref;
12021 l_cz_rules_sig_tbl cz_pb_mgr.t_ref;
12022 l_cz_rules_ui_tbl cz_pb_mgr.t_ref;
12023 l_cz_rules_perst_id_tbl cz_pb_mgr.t_ref;
12024 l_eff_usg_mask_tbl cz_pb_mgr.t_eff_usage_mask;
12025 l_object_type cz_rule_folders.object_type%TYPE;
12026 l_rule_type_tbl cz_pb_mgr.t_ref;
12027
12028 rec_count PLS_INTEGER;
12029
12030 BEGIN
12031 IF (x_status = PUBLICATION_ERROR OR p_model_array.COUNT = 0) THEN
12032 RETURN;
12033 END IF;
12034 rec_count := cz_pb_mgr.v_cz_rules_rule_id_new_ref.COUNT; -- ? 0
12035
12036 FOR i IN p_model_array.FIRST .. p_model_array.LAST
12037 LOOP
12038 l_cz_rules_new_id_tbl.DELETE;
12039 l_cz_rules_old_id_tbl.DELETE;
12040 l_cz_rules_rf_id_tbl.DELETE;
12041 l_cz_rules_proj_id_tbl.DELETE;
12042 l_cz_rules_comp_id_tbl.DELETE;
12043 l_cz_rules_rea_id_tbl.DELETE;
12044 l_cz_rules_eff_id_tbl.DELETE;
12045 l_cz_rules_unmsg_id_tbl.DELETE;
12046 l_cz_rules_expl_id_tbl.DELETE;
12047 l_cz_rules_sig_tbl.DELETE;
12048 l_cz_rules_ui_tbl.DELETE;
12049 l_eff_usg_mask_tbl.DELETE;
12050 l_cz_rules_perst_id_tbl.DELETE;
12051 l_rule_type_tbl.DELETE;
12052
12053 BEGIN
12054 IF (cz_pb_mgr.v_session_parameter = MODEL_COPY) THEN
12055 IF (COPY_RULES = 'YES') THEN
12056 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
12057 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
12058 ,rule_id, rule_folder_id, devl_project_id, component_id
12059 ,reason_id, unsatisfied_msg_id, effectivity_set_id
12060 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
12061 ,persistent_rule_id, rule_type
12062 BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
12063 ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
12064 ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
12065 ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
12066 ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
12067 FROM cz_rules t
12068 WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
12069 AND t.seeded_flag <> SEED_DATA
12070 AND ((CZ_PB_MGR.COPY_UIS='YES')
12071 OR
12072 (rule_type NOT IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION))
12073 )
12074 AND (
12075 (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
12076 (t.ui_def_id>1 AND
12077 EXISTS(SELECT NULL FROM CZ_UI_DEFS u
12078 WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
12079 EXISTS(SELECT NULL FROM CZ_UI_PAGES p
12083
12080 WHERE p.page_id=t.ui_page_id AND
12081 p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
12082 );
12084 END IF;
12085 ELSE
12086 IF (p_rules_flag = 'YES') THEN
12087 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
12088 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
12089 ,rule_id, rule_folder_id, devl_project_id, component_id
12090 ,reason_id, unsatisfied_msg_id, effectivity_set_id
12091 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
12092 ,persistent_rule_id, rule_type
12093 BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
12094 ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
12095 ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
12096 ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
12097 ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
12098 FROM cz_rules t
12099 WHERE t.devl_project_id = p_model_array(i) AND t.deleted_flag = '0'
12100 AND t.seeded_flag <> SEED_DATA
12101 AND (
12102 (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
12103 (t.ui_def_id>1 AND
12104 EXISTS(SELECT NULL FROM CZ_UI_DEFS u
12105 WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
12106 EXISTS(SELECT NULL FROM CZ_UI_PAGES p
12107 WHERE p.page_id=t.ui_page_id AND
12108 p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
12109 );
12110
12111 ELSE
12112 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rules_seq
12113 ,'cz_rules_s.nextval' || cz_pb_mgr.v_db_link, cz_pb_mgr.v_oraclesequenceincr)
12114 ,rule_id, rule_folder_id, devl_project_id, component_id
12115 ,reason_id, unsatisfied_msg_id, effectivity_set_id
12116 ,model_ref_expl_id, signature_id, ui_def_id, effective_usage_mask
12117 ,persistent_rule_id, rule_type
12118 BULK COLLECT INTO l_cz_rules_new_id_tbl, l_cz_rules_old_id_tbl
12119 ,l_cz_rules_rf_id_tbl, l_cz_rules_proj_id_tbl, l_cz_rules_comp_id_tbl
12120 ,l_cz_rules_rea_id_tbl, l_cz_rules_unmsg_id_tbl, l_cz_rules_eff_id_tbl
12121 ,l_cz_rules_expl_id_tbl, l_cz_rules_sig_tbl, l_cz_rules_ui_tbl, l_eff_usg_mask_tbl
12122 ,l_cz_rules_perst_id_tbl, l_rule_type_tbl
12123 FROM cz_rules t
12124 WHERE t.devl_project_id = p_model_array(i)
12125 AND t.rule_type IN (RULE_TYPE_CONFIG_EXTENSION, RULE_TYPE_DISPLAY_CONDITION,
12126 RULE_TYPE_ENABLED_CONDITION, RULE_TYPE_CAPTION)
12127 AND t.deleted_flag = '0' AND t.seeded_flag <> SEED_DATA
12128 AND (
12129 (t.ui_def_id IS NULL OR t.ui_def_id IN(0,1)) OR
12130 (t.ui_def_id>1 AND
12131 EXISTS(SELECT NULL FROM CZ_UI_DEFS u
12132 WHERE u.ui_def_id=t.ui_def_id AND u.deleted_flag='0') AND
12133 EXISTS(SELECT NULL FROM CZ_UI_PAGES p
12134 WHERE p.page_id=t.ui_page_id AND
12135 p.ui_def_id=t.ui_def_id AND p.deleted_flag='0'))
12136 );
12137
12138 END IF;
12139 END IF;
12140 EXCEPTION
12141 WHEN NO_DATA_FOUND THEN
12142 cz_pb_mgr.v_err_message := 'No rules found for model: ' || p_model_array(i);
12143 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULES', SQLCODE);
12144 WHEN OTHERS THEN
12145 RAISE;
12146 END;
12147
12148 IF l_cz_rules_new_id_tbl.COUNT > 0 THEN
12149 FOR k IN l_cz_rules_new_id_tbl.FIRST .. l_cz_rules_new_id_tbl.LAST
12150 LOOP
12151 rec_count := rec_count + 1;
12152 cz_pb_mgr.v_cz_rules_rule_id_idx_ref(l_cz_rules_old_id_tbl(k)):=l_cz_rules_new_id_tbl(k);
12153 cz_pb_mgr.v_cz_rules_proj_id_ref(rec_count) := l_cz_rules_proj_id_tbl(k);
12154 cz_pb_mgr.v_cz_rules_comp_id_ref(rec_count) := l_cz_rules_comp_id_tbl(k);
12155 cz_pb_mgr.v_cz_rules_expl_ref(rec_count) := l_cz_rules_expl_id_tbl(k);
12156 p_rules_new_array(rec_count) := l_cz_rules_new_id_tbl(k);
12157 p_rules_old_array(rec_count) := l_cz_rules_old_id_tbl(k);
12158 cz_pb_mgr.v_cz_rules_rea_id_ref(rec_count) := l_cz_rules_rea_id_tbl(k);
12159 cz_pb_mgr.v_cz_rules_unmsg_id_ref(rec_count) := l_cz_rules_unmsg_id_tbl(k);
12160 cz_pb_mgr.v_cz_rules_eff_id_ref(rec_count) := l_cz_rules_eff_id_tbl(k);
12161 cz_pb_mgr.v_cz_rules_sig_ref(rec_count) := l_cz_rules_sig_tbl(k);
12162 cz_pb_mgr.v_cz_rules_ui_ref(rec_count) := l_cz_rules_ui_tbl(k);
12163 cz_pb_mgr.v_cz_rule_usage_mask_tbl(rec_count) := l_eff_usg_mask_tbl(k);
12164 cz_pb_mgr.v_cz_rules_obj_ref(rec_count) := 'RUL';
12165 cz_pb_mgr.v_cz_rules_persistent_id_ref(rec_count) := l_cz_rules_perst_id_tbl(k);
12166
12167 IF l_rule_type_tbl(k) IN (RULE_TYPE_DISPLAY_CONDITION, RULE_TYPE_ENABLED_CONDITION,
12168 RULE_TYPE_CAPTION, RULE_TYPE_POPULATOR) THEN
12169 cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := 0;
12170 ELSE
12171 cz_pb_mgr.v_cz_rules_rf_id_ref(rec_count) := l_cz_rules_rf_id_tbl(k);
12172 END IF;
12173 END LOOP;
12174 END IF;
12175 END LOOP;
12176
12177 IF (rec_count > 0 AND (cz_pb_mgr.v_session_parameter = MODEL_COPY OR
12181 BEGIN
12178 cz_pb_mgr.v_session_parameter = CZ_MODEL_MIGRATION_PVT.MIGRATE_MODEL)) THEN
12179 FOR j IN p_rules_old_array.FIRST .. p_rules_old_array.LAST
12180 LOOP
12182 SELECT object_type INTO l_object_type
12183 FROM cz_rule_folders
12184 WHERE rule_folder_id = p_rules_old_array(j) AND object_type NOT IN ('FNC', 'RFL', 'RSQ');
12185 cz_pb_mgr.v_cz_rules_obj_ref(j) := l_object_type;
12186 EXCEPTION
12187 WHEN NO_DATA_FOUND THEN
12188 NULL;
12189 END;
12190 END LOOP;
12191 END IF;
12192 EXCEPTION
12193 WHEN OTHERS THEN
12194 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rules', 'SQLERRM', SQLERRM);
12195 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZ_RULES', SQLCODE);
12196 x_status := PUBLICATION_ERROR;
12197 RAISE;
12198 END bulk_collect_rules;
12199
12200 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12201 ----procedure that clears all global pl/sql tables
12202 PROCEDURE clear_all_tables(x_status IN OUT NOCOPY VARCHAR2)
12203 AS
12204 BEGIN
12205 clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
12206 clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
12207 clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
12208 clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
12209 clear_tables('cz_func_comp_specs', 'tbl', cz_pb_mgr.v_status_code);
12210 clear_tables('cz_func_comp_specs', 'ref', cz_pb_mgr.v_status_code);
12211 clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
12212 clear_tables('cz_ui_defs', 'tbl', cz_pb_mgr.v_status_code);
12213 clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
12214 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
12215 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
12216 clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
12217 clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
12218 clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
12219 clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
12220 clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
12221 clear_tables('cz_expression_nodes', 'ref', cz_pb_mgr.v_status_code);
12222 clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
12223 clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
12224 clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
12225 clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
12226 clear_tables('cz_lce_load_specs', 'ref', cz_pb_mgr.v_status_code);
12227 EXCEPTION
12228 WHEN OTHERS
12229 THEN
12230 cz_pb_mgr.v_err_message := 'Error in clearing all tables : ' || SQLERRM;
12231 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CLEARALLTABLES', SQLCODE);
12232 x_status := PUBLICATION_ERROR;
12233 RAISE;
12234 END clear_all_tables;
12235
12236 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12237 -----procedure to get the new ui_def_id that would be in the target publication
12238 -----@p_publication_id : source publication_id
12239 -----@p_old_ui_array : array containing old ui_def_ids
12240 -----@p_new_ui_array : array containing new ui_def_ids
12241 -----@x_new_ui_def_id : new ui_def_id
12242 -----@x_status : publication status parameter
12243 PROCEDURE get_new_ui_def_id(
12244 p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12245 ,p_old_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
12246 ,p_new_ui_array IN OUT NOCOPY cz_pb_mgr.t_ref
12247 ,x_new_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
12248 ,x_status IN OUT NOCOPY VARCHAR2
12249 )
12250 AS
12251 v_old_ui_def_id cz_model_publications.model_id%TYPE;
12252 BEGIN
12253 IF (x_status <> PUBLICATION_ERROR)
12254 THEN
12255 SELECT ui_def_id
12256 INTO v_old_ui_def_id
12257 FROM cz_model_publications
12258 WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
12259
12260 IF ((v_old_ui_def_id > 0) AND(p_new_ui_array.COUNT > 0))
12261 THEN
12262 IF (p_old_ui_array.COUNT > 0) THEN
12263 FOR i IN p_old_ui_array.FIRST .. p_old_ui_array.LAST
12264 LOOP
12265 IF (v_old_ui_def_id = p_old_ui_array(i))
12266 THEN
12267 x_new_ui_def_id := p_new_ui_array(i);
12268 EXIT;
12269 END IF;
12270 END LOOP;
12271 END IF;
12272 ELSE
12273 x_new_ui_def_id := NULL;
12274 END IF;
12275 END IF;
12276 EXCEPTION
12277 WHEN OTHERS
12278 THEN
12279 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_DATA_FOUND', 'TABLENAME', 'cz_model_publications', 'SQLERRM', SQLERRM);
12280 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:UIDEFID', SQLCODE);
12281 x_status := PUBLICATION_ERROR;
12282 RAISE;
12283 END get_new_ui_def_id;
12284
12285 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12286 ----procedure gets model id for target publication
12287 PROCEDURE get_new_model_id(
12288 p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12289 ,p_new_model_array IN OUT NOCOPY cz_pb_mgr.t_ref
12290 ,x_new_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
12294 BEGIN
12291 ,x_status IN OUT NOCOPY VARCHAR2
12292 )
12293 AS
12295 IF (x_status <> PUBLICATION_ERROR)
12296 THEN
12297 IF (p_new_model_array.COUNT > 0)
12298 THEN
12299 SELECT remote_model_id
12300 INTO x_new_model_id
12301 FROM cz_pb_model_exports
12302 WHERE cz_pb_model_exports.publication_id = p_publication_id
12303 AND cz_pb_model_exports.model_id = cz_pb_model_exports.root_model_id
12304 ---AND cz_pb_model_exports.export_reverse_seq = 0
12305 AND cz_pb_model_exports.superseded_flag = 'N';
12306 END IF;
12307
12308 ---the above query has been changed to hold good for circular connectors
12309 ---In circular references the root may not have an export rev seq of 0
12310 UPDATE cz_pb_model_exports
12311 SET superseded_flag = 'Y'
12312 WHERE publication_id = p_publication_id AND superseded_flag = 'N';
12313 END IF;
12314 EXCEPTION
12315 WHEN OTHERS
12316 THEN
12317 cz_pb_mgr.v_err_message := 'Error in retrieving new model id for publication id: ' || p_publication_id || ' : ' || SQLERRM;
12318 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETNEWMODELID', SQLCODE);
12319 x_status := PUBLICATION_ERROR;
12320 RAISE;
12321 END get_new_model_id;
12322
12323 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12324 ------procedure that retrieves the source publication_id, export_status, server_id, remote_publication_id
12325 ------from cz_model_publications table
12326 ------@p_publication_id : publication id whose info is required
12327 ------@p_status : publication_status
12328 ------@x_model_id : model that is to be published
12329 ------@x_ui_def_id : ui_def_id
12330 ------@x_export_status : prev publication status
12331 ------@x_remote_publication_id : prev remote publication id
12332 ------@x_status : publication status parameter
12333 PROCEDURE get_source_pb_info(
12334 p_publication_id IN cz_model_publications.publication_id%TYPE
12335 ,x_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
12336 ,x_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
12337 ,x_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
12338 ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12339 ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12340 ,x_object_type IN OUT NOCOPY cz_model_publications.object_type%TYPE
12341 ,x_pb_mode IN OUT NOCOPY cz_model_publications.publication_mode%TYPE
12342 ,x_status IN OUT NOCOPY VARCHAR2
12343 )
12344 AS
12345 BEGIN
12346 IF (x_status <> PUBLICATION_ERROR)
12347 THEN
12348 SELECT object_id, ui_def_id, server_id, export_status, remote_publication_id, object_type, publication_mode, NVL(config_engine_type, 'L')
12349 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
12350 FROM cz_model_publications, cz_devl_projects
12351 WHERE cz_model_publications.publication_id = p_publication_id
12352 AND cz_model_publications.deleted_flag = record_not_deleted
12353 AND cz_model_publications.object_id = cz_devl_projects.devl_project_id
12354 AND cz_devl_projects.deleted_flag = '0';
12355 -- Bug 5507300; 06-Sep-2006; kdande; Removed the following condition as user should be able to Republish disabled publications.
12356 -- AND cz_model_publications.disabled_flag = '0';
12357
12358 ----if x_ui_def_id is null
12359 IF (x_ui_def_id IS NULL)
12360 THEN
12361 BEGIN
12362 SELECT ui_def_id
12363 INTO x_ui_def_id
12364 FROM cz_ui_defs
12365 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;
12366 EXCEPTION
12367 WHEN NO_DATA_FOUND
12368 THEN
12369 x_ui_def_id := NULL;
12370 WHEN OTHERS
12371 THEN
12372 x_ui_def_id := 0;
12373 END;
12374 END IF;
12375 END IF;
12376 EXCEPTION
12377 WHEN OTHERS
12378 THEN
12379 cz_pb_mgr.v_err_message :=
12380 'Error in retrieving source publication info for publication id : ' || TO_CHAR(p_publication_id) || ' : '
12381 || SQLERRM;
12382 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12383 x_status := PUBLICATION_ERROR;
12384 RAISE;
12385 END get_source_pb_info;
12386
12387 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12388 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
12389 ------from cz_model_publications table
12390 ------@p_publication_id : publication id whose info is required
12391 ------@p_status : publication_status
12392 ------@x_prev publication id : prev publication id
12393 ------@x_prev_export_status : prev publication status
12394 ------@x_prev_remote_publication_id : prev remote publication id
12395 ------@x_status : publication status parameter
12396 PROCEDURE get_new_copy_pb_info(
12397 p_publication_id IN cz_model_publications.publication_id%TYPE
12398 ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12399 ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12403 AS
12400 ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12401 ,x_status IN OUT NOCOPY VARCHAR2
12402 )
12404 BEGIN
12405 IF (p_publication_id IS NOT NULL)
12406 THEN
12407 SELECT publication_id, export_status, remote_publication_id
12408 INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
12409 FROM cz_model_publications
12410 WHERE cz_model_publications.publication_id = p_publication_id AND cz_model_publications.deleted_flag = record_not_deleted;
12411 END IF;
12412 EXCEPTION
12413 WHEN OTHERS
12414 THEN
12415 cz_pb_mgr.v_err_message :=
12416 'Error in retrieving publication info (newcopy) for publication id : ' || TO_CHAR(p_publication_id) || ' : '
12417 || SQLERRM;
12418 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12419 x_status := PUBLICATION_ERROR;
12420 RAISE;
12421 END get_new_copy_pb_info;
12422
12423 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12424 ------procedure that retrieves the prev publication_id, export_status, server_id, remote_publication_id
12425 ------from cz_model_publications table
12426 ------@p_publication_id : publication id whose info is required
12427 ------@p_status : publication_status
12428 ------@x_prev publication id : prev publication id
12429 ------@x_prev_export_status : prev publication status
12430 ------@x_prev_remote_publication_id : prev remote publication id
12431 ------@x_status : publication status parameter
12432 PROCEDURE get_republish_pb_info(
12433 p_publication_id IN cz_model_publications.publication_id%TYPE
12434 ,p_status IN cz_model_publications.export_status%TYPE
12435 ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12436 ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12437 ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12438 ,x_status IN OUT NOCOPY VARCHAR2
12439 )
12440 AS
12441 BEGIN
12442 SELECT publication_id, export_status, remote_publication_id
12443 INTO x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id
12444 FROM cz_model_publications
12445 WHERE cz_model_publications.remote_publication_id = p_publication_id
12446 AND cz_model_publications.export_status = p_status
12447 AND cz_model_publications.deleted_flag = record_not_deleted;
12448 EXCEPTION
12449 WHEN OTHERS
12450 THEN
12451 cz_pb_mgr.v_err_message := 'Error in retrieving publication info (republish) for publication id : ' || p_publication_id || ' : ' || SQLERRM;
12452 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12453 x_status := PUBLICATION_ERROR;
12454 RAISE;
12455 END get_republish_pb_info;
12456
12457 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12458 ----------procedure to get the max publication id for a model
12459 ----------@p_model_id : devl_project_id of the model
12460 ----------@p_server_id : server_id of the publication request
12461 ----------@x_publication_id : retrieved max publication id
12462 ----------@x_status: publication status parameter
12463 PROCEDURE get_max_pub_id(
12464 p_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
12465 ,p_server_id IN OUT NOCOPY cz_model_publications.server_id%TYPE
12466 ,x_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12467 ,x_status IN OUT NOCOPY VARCHAR2
12468 )
12469 AS
12470 BEGIN
12471 SELECT MAX(publication_id)
12472 INTO x_publication_id
12473 FROM cz_model_publications t
12474 WHERE t.model_id = p_model_id
12475 AND t.server_id = p_server_id
12476 AND t.model_last_struct_update = (SELECT last_struct_update
12477 FROM cz_devl_projects
12478 WHERE cz_devl_projects.devl_project_id = p_model_id)
12479 AND t.export_status IN('PUP', 'OK')
12480 AND t.source_target_flag = g_source_flag
12481 AND t.publication_id <> cz_pb_mgr.v_publication_id
12482 AND t.deleted_flag = record_not_deleted;
12483 EXCEPTION
12484 WHEN NO_DATA_FOUND
12485 THEN
12486 NULL;
12487 WHEN OTHERS
12488 THEN
12489 cz_pb_mgr.v_err_message := 'Error in retrieving max publication id for model id : ' || p_model_id || ' : ' || SQLERRM;
12490 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPUBINFO', SQLCODE);
12491 x_status := PUBLICATION_ERROR;
12492 RAISE;
12493 END get_max_pub_id;
12494
12495 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12496 -----procedure that retrieves previous publication
12497 -----if an existing publication is re-published. This is again based on if all UIs are exported
12498 -----or no UI is exported i.e., only a publication request is created and no data is exported
12499 -----@p_ui_str : values are 'UI' or 'x' that indicates if UIs are exported
12500 -----@p_session_parameter : differentiates between a publishing process and deep copy
12501 -----@p_rem_publication_id : remote publication id of the existing publication
12502 -----@x_prev publication id : prev publication id
12503 -----@x_prev_export_status : prev publication status
12504 -----@x_prev_remote_publication_id : prev remote publication id
12505 -----@x_status : publication status parameter
12506 PROCEDURE get_prev_publication(
12507 p_ui_str IN OUT NOCOPY VARCHAR2
12511 ,x_prev_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12508 ,p_session_parameter IN OUT NOCOPY VARCHAR2
12509 ,p_rem_publication_id IN cz_model_publications.publication_id%TYPE
12510 ,x_prev_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12512 ,x_prev_remote_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12513 ,x_status IN OUT NOCOPY VARCHAR2
12514 )
12515 AS
12516 v_pr_pub_id cz_model_publications.publication_id%TYPE;
12517 BEGIN
12518 IF ((p_ui_str = 'UI') AND(p_session_parameter <> model_copy))
12519 THEN
12520 IF (p_rem_publication_id IS NOT NULL)
12521 THEN
12522 get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12523
12524 IF (x_prev_publication_id > 0)
12525 THEN
12526 cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
12527 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
12528 END IF;
12529 ELSE
12530 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);
12531 get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12532
12533 IF (x_prev_publication_id > 0)
12534 THEN
12535 cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(x_prev_publication_id);
12536 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
12537 END IF;
12538 END IF; /* end if of ( p_rem_publication_id IS NOT NULL) */
12539 ELSIF((cz_pb_mgr.v_ui_str = 'x') AND(cz_pb_mgr.v_session_parameter <> model_copy))
12540 THEN
12541 IF (p_rem_publication_id IS NOT NULL)
12542 THEN
12543 get_republish_pb_info(p_rem_publication_id, 'PUP', x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12544
12545 IF (x_prev_publication_id > 0)
12546 THEN
12547 cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(x_prev_publication_id);
12548 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZMODPUB', SQLCODE);
12549 END IF;
12550 ELSE
12551 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);
12552 get_new_copy_pb_info(v_pr_pub_id, x_prev_publication_id, x_prev_export_status, x_prev_remote_publication_id, x_status);
12553 END IF;
12554 END IF; /* end if of (p_ui_str = 'UI') AND (p_session_parameter <> MODEL_COPY) */
12555 EXCEPTION
12556 WHEN OTHERS
12557 THEN
12558 cz_pb_mgr.v_err_message :=
12559 'Error in retrieving previous publication info for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
12560 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETPREVPUB', SQLCODE);
12561 RAISE;
12562 END get_prev_publication;
12563
12564 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12565 ------procedure inserts target publication record
12566 ------@p_new_publication_id : new publication id
12567 ------@p_old_publication_id : old publication id
12568 ------@p_link IN OUT NOCOPY : db link
12569 ------@x_status publication status parameter
12570 PROCEDURE insert_tgt_publication(
12571 p_new_publication_id IN cz_model_publications.publication_id%TYPE
12572 ,p_old_publication_id IN cz_model_publications.publication_id%TYPE
12573 ,p_model_id IN cz_model_publications.model_id%TYPE
12574 ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
12575 ,p_link IN OUT NOCOPY VARCHAR2
12576 ,p_insert_flag IN VARCHAR2
12577 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
12578 )
12579 AS
12580 v_ui_def VARCHAR2(2000);
12581 v_inst_str VARCHAR2(8000);
12582 v_src_ui_def_id VARCHAR2(2000);
12583 BEGIN
12584 IF ((p_new_publication_id > 0) AND(x_status <> PUBLICATION_ERROR))
12585 THEN
12586 get_synchronized_pb_values(p_old_publication_id);
12587
12588 IF (p_ui_def_id IS NULL)
12589 THEN
12590 v_ui_def := 'NULL';
12591 v_src_ui_def_id := 'NULL';
12592 ELSE
12593 v_ui_def := TO_CHAR(p_ui_def_id);
12594 v_src_ui_def_id := TO_CHAR(cz_pb_mgr.v_root_ui_def_id);
12595 END IF;
12596
12597 v_inst_str :=
12598 'INSERT INTO cz_model_publications'
12599 || p_link
12600 || ''
12601 || ' '
12602 || '(PUBLICATION_ID'
12603 || ' '
12604 || ',MODEL_ID'
12605 || ' '
12606 || ',OBJECT_ID'
12607 || ' '
12608 || ',OBJECT_TYPE'
12609 || ' '
12610 || ',SERVER_ID'
12611 || ' '
12612 || ',ORGANIZATION_ID'
12613 || ' '
12614 || ',TOP_ITEM_ID'
12615 || ' '
12616 || ',PRODUCT_KEY'
12617 || ' '
12618 || ',PUBLICATION_MODE'
12619 || ' '
12620 || ',UI_DEF_ID'
12621 || ' '
12622 || ',UI_STYLE'
12623 || ' '
12624 || ',APPLICABLE_FROM'
12625 || ' '
12629 || ' '
12626 || ',APPLICABLE_UNTIL'
12627 || ' '
12628 || ',EXPORT_STATUS'
12630 || ',MODEL_PERSISTENT_ID'
12631 || ' '
12632 || ',DELETED_FLAG'
12633 || ' '
12634 || ',MODEL_LAST_STRUCT_UPDATE'
12635 || ' '
12636 || ',MODEL_LAST_LOGIC_UPDATE'
12637 || ' '
12638 || ',MODEL_LAST_UPDATED'
12639 || ' '
12640 || ',SOURCE_TARGET_FLAG'
12641 || ' '
12642 || ',REMOTE_PUBLICATION_ID'
12643 || ' '
12644 || ',SOURCE_UI_DEF_ID'
12645 || ' '
12646 || ',SOURCE_MODEL_ID'
12647 || ' '
12648 || ',CONTAINER'
12649 || ' '
12650 || ',PAGE_LAYOUT'
12651 || ' '
12652 || ',disabled_flag'
12653 || ' '
12654 || ')'
12655 || ' '
12656 || 'SELECT :1'
12657 || ' '
12658 || ',:2'
12659 || ' '
12660 || ',:3'
12661 || ' '
12662 || ',OBJECT_TYPE'
12663 || ' '
12664 || ',SERVER_ID'
12665 || ' '
12666 || ',:4'
12667 || ' '
12668 || ',:5'
12669 || ' '
12670 || ',:6'
12671 || ' '
12672 || ',PUBLICATION_MODE'
12673 || ' '
12674 || ',:7'
12675 || ' '
12676 || ',UI_STYLE'
12677 || ' '
12678 || ',APPLICABLE_FROM'
12679 || ' '
12680 || ',APPLICABLE_UNTIL'
12681 || ' '
12682 || ',''OK'''
12683 || ' '
12684 || ',MODEL_PERSISTENT_ID'
12685 || ' '
12686 || ',DELETED_FLAG'
12687 || ' '
12688 || ',MODEL_LAST_STRUCT_UPDATE'
12689 || ' '
12690 || ',MODEL_LAST_LOGIC_UPDATE'
12691 || ' '
12692 || ',MODEL_LAST_UPDATED'
12693 || ' '
12694 || ','''
12695 || g_target_flag
12696 || ''''
12697 || ' '
12698 || ',:8'
12699 || ' '
12700 || ',:9'
12701 || ' '
12702 || ',:10'
12703 || ' '
12704 || ',CONTAINER'
12705 || ' '
12706 || ',PAGE_LAYOUT'
12707 || ' '
12708 || ',disabled_flag'
12709 || ' '
12710 || 'FROM cz_model_publications'
12711 || ' '
12712 || 'WHERE publication_id = :11 ';
12713
12714 EXECUTE IMMEDIATE v_inst_str
12715 USING p_new_publication_id
12716 ,p_model_id
12717 ,p_model_id
12718 ,cz_pb_mgr.v_bomsynch_org_id
12719 ,cz_pb_mgr.v_bomsynch_item_id
12720 ,cz_pb_mgr.v_bomsynch_product_key
12721 ,p_ui_def_id
12722 ,p_old_publication_id
12723 ,cz_pb_mgr.v_root_ui_def_id
12724 ,cz_pb_mgr.v_root_model_id
12725 ,p_old_publication_id;
12726
12727 ---------update remote_publication on the source
12728 IF (p_insert_flag = 'REPUBLISH')
12729 THEN
12730 UPDATE cz_model_publications
12731 SET remote_publication_id = p_new_publication_id
12732 WHERE publication_id = cz_pb_mgr.v_cz_model_pub_old_id;
12733 ELSIF(p_insert_flag = 'NEW')
12734 THEN
12735 UPDATE cz_model_publications
12736 SET remote_publication_id = p_new_publication_id
12737 WHERE publication_id = p_old_publication_id;
12738 END IF;
12739
12740 ------update for republish_model api
12741 IF (cz_pb_mgr.v_republish_model = new_copy_mode)
12742 THEN
12743 EXECUTE IMMEDIATE 'UPDATE cz_model_publications'
12744 || p_link
12745 || ' t '
12746 || ' '
12747 || 'SET t.applicable_from = :1,'
12748 || ' '
12749 || 't.applicable_until = :2'
12750 || ' '
12751 || 'WHERE t.publication_id = :3 '
12752 USING v_repub_appl_from, v_repub_appl_until, v_repub_remote_pb_id;
12753 END IF;
12754
12755 EXECUTE IMMEDIATE 'UPDATE cz_devl_projects set checkout_user = NULL ' || ' ' || 'WHERE devl_project_id = ' || NVL(p_model_id, 0);
12756 END IF;
12757
12758 COMMIT;
12759 EXCEPTION
12760 WHEN OTHERS
12761 THEN
12762 cz_pb_mgr.v_err_message := 'Error in inserting target publication for source publication id: ' || p_old_publication_id || ' : ' || SQLERRM;
12763 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
12764 x_status := PUBLICATION_ERROR;
12765 RAISE;
12766 END insert_tgt_publication;
12767
12768 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12769 -----procedure that inserts publication applicability parameters on the target instance
12770 PROCEDURE insert_pb_parameters(
12774 ,p_db_link IN VARCHAR2
12771 p_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12772 ,p_old_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
12773 ,p_session_parameter IN OUT NOCOPY VARCHAR2
12775 ,x_status IN OUT NOCOPY VARCHAR2
12776 )
12777 AS
12778 BEGIN
12779 IF (x_status <> PUBLICATION_ERROR) AND(p_session_parameter <> model_copy)
12780 THEN
12781 ---------------- insert the fields of cz_pb_client_apps
12782 cz_pb_mgr.v_insert_string :='INSERT INTO cz_pb_client_apps'||p_db_link || ' ' ||
12783 '(PUBLICATION_ID,FND_APPLICATION_ID,APPLICATION_SHORT_NAME,NOTES)' || ' ' ||
12784 'SELECT '||p_new_publication_id||',t.APPLICATION_ID,t.APPLICATION_SHORT_NAME,NOTES' || ' ' ||
12785 'FROM cz_pb_client_apps,fnd_application' ||p_db_link|| ' ' ||
12786 't WHERE cz_pb_client_apps.publication_id = :1' || ' ' ||
12787 'and cz_pb_client_apps.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME';
12788 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
12789
12790 COMMIT;
12791 ----------insert the fields of cz_publication_usages
12792 cz_pb_mgr.v_insert_string :=
12793 'INSERT INTO cz_publication_usages'
12794 || p_db_link
12795 || ' '
12796 || '(PUBLICATION_ID,USAGE_ID)'
12797 || ' '
12798 || 'SELECT '
12799 || p_new_publication_id
12800 || ',USAGE_ID'
12801 || ' '
12802 || 'FROM cz_publication_usages'
12803 || ' '
12804 || 'WHERE publication_id = :1';
12805
12806 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
12807
12808
12809 COMMIT;
12810 ---------------- insert the fields of cz_pb_languages
12811 cz_pb_mgr.v_insert_string :=
12812 'INSERT INTO cz_pb_languages'
12813 || p_db_link
12814 || ' '
12815 || '(PUBLICATION_ID,LANGUAGE)'
12816 || ' '
12817 || 'SELECT '
12818 || p_new_publication_id
12819 || ',LANGUAGE'
12820 || ' '
12821 || 'FROM cz_pb_languages'
12822 || ' '
12823 || 'WHERE cz_pb_languages.publication_id = :1';
12824
12825 EXECUTE IMMEDIATE v_insert_string using p_old_publication_id;
12826
12827 COMMIT;
12828 END IF; /* end if of x_status <> PUBLICATION_ERROR) AND (p_session_parameter <> MODEL_COPY */
12829 EXCEPTION
12830 WHEN OTHERS
12831 THEN
12832 cz_pb_mgr.v_err_message :=
12833 'Error in inserting publication parameters on the target instance for source publication id: ' || p_old_publication_id || ' : '
12834 || SQLERRM;
12835 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.INSERTTGTPUB', SQLCODE);
12836 x_status := PUBLICATION_ERROR;
12837 RAISE;
12838 END insert_pb_parameters;
12839
12840 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12841 PROCEDURE insert_devl_projects(
12842 p_new_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
12843 ,p_old_model_id IN OUT NOCOPY cz_devl_projects.devl_project_id%TYPE
12844 ,p_orig_sys_ref IN OUT NOCOPY cz_devl_projects.orig_sys_ref%TYPE
12845 ,x_status IN OUT NOCOPY VARCHAR2
12846 )
12847 AS
12848 l_sql_query VARCHAR2(32000);
12849 BEGIN
12850 IF (x_status <> PUBLICATION_ERROR)
12851 THEN
12852 cz_pb_mgr.v_devl_orig_sys_ref := NULL;
12853 cz_pb_mgr.l_intl_text_id_tbl.DELETE;
12854 cz_pb_mgr.l_bom_caption_rule_tbl.DELETE;
12855 cz_pb_mgr.l_nonbom_caption_rule_tbl.DELETE;
12856 cz_pb_mgr.l_bom_caption_rule := 0;
12857 cz_pb_mgr.l_nonbom_capt_rule_id := 0;
12858 l_devl_proj_inv_id := NULL;
12859 l_devl_proj_org_id := NULL;
12860 l_devl_proj_product_key := NULL;
12861 l_bom_caption_text_id := 0;
12862 l_nonbom_caption_text_id := 0;
12863
12864 SELECT DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_origsysref(orig_sys_ref), orig_sys_ref), bom_caption_rule_id
12865 ,nonbom_caption_rule_id, DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_invid(inventory_item_id), inventory_item_id)
12866 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_orgid(organization_id), organization_id)
12867 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.devlproject_productkey(product_key), product_key), bom_caption_text_id
12868 ,nonbom_caption_text_id
12869 INTO cz_pb_mgr.v_devl_orig_sys_ref, cz_pb_mgr.l_bom_caption_rule
12870 ,cz_pb_mgr.l_nonbom_capt_rule_id, cz_pb_mgr.l_devl_proj_inv_id
12871 ,cz_pb_mgr.l_devl_proj_org_id
12872 ,cz_pb_mgr.l_devl_proj_product_key, cz_pb_mgr.l_bom_caption_text_id
12873 ,cz_pb_mgr.l_nonbom_caption_text_id
12874 FROM cz_devl_projects
12875 WHERE cz_devl_projects.devl_project_id = p_old_model_id;
12876
12877 IF (cz_pb_mgr.l_bom_caption_text_id <> 0)
12878 THEN
12879 cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_bom_caption_text_id;
12880 insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'bom capt text of cz_devl_projects');
12881 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');
12882 cz_pb_mgr.l_bom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
12883 ELSE
12884 cz_pb_mgr.l_bom_caption_text_id := NULL;
12888 THEN
12885 END IF;
12886
12887 IF (cz_pb_mgr.l_nonbom_caption_text_id <> 0)
12889 cz_pb_mgr.l_intl_text_id_tbl(1) := cz_pb_mgr.l_nonbom_caption_text_id;
12890 insert_intl_texts(cz_pb_mgr.l_intl_text_id_tbl, 'non bom capt text of cz_devl_projects');
12891 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');
12892 cz_pb_mgr.l_nonbom_caption_text_id := cz_pb_mgr.l_intl_text_id_tbl(1);
12893 ELSE
12894 cz_pb_mgr.l_nonbom_caption_text_id := NULL;
12895 END IF;
12896
12897 IF (cz_pb_mgr.l_bom_caption_rule <> 0)
12898 THEN
12899 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);
12900 ELSE
12901 cz_pb_mgr.l_bom_caption_rule := NULL;
12902 END IF;
12903
12904 IF (cz_pb_mgr.l_nonbom_capt_rule_id <> 0)
12905 THEN
12906 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);
12907 ELSE
12908 cz_pb_mgr.l_nonbom_capt_rule_id := NULL;
12909 END IF;
12910
12911 l_sql_query :=
12912 'BEGIN INSERT INTO cz_devl_projects'
12913 || cz_pb_mgr.v_db_link
12914 || '(DEVL_PROJECT_ID'
12915 || ' '
12916 || ',NAME,VERSION,DESC_TEXT,ORIG_SYS_REF,PUBLISHED,LAST_STRUCT_UPDATE'
12917 || ' '
12918 || ',UI_TIMESTAMP_STRUCT_UPDATE'
12919 || ' '
12920 || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
12921 || ' '
12922 || ',MODEL_TYPE,bom_caption_rule_id,nonbom_caption_rule_id'
12923 || ' '
12924 || ',organization_id,inventory_item_id,product_key'
12925 || ' '
12926 || ',bom_caption_text_id,nonbom_caption_text_id,POST_MIGR_CHANGE_FLAG,config_engine_type)'
12927 || ' '
12928 || 'SELECT :1'
12929 || ' '
12930 || ',NAME,VERSION,DESC_TEXT,:2,PUBLISHED,LAST_STRUCT_UPDATE'
12931 || ' '
12932 || ',UI_TIMESTAMP_STRUCT_UPDATE'
12933 || ' '
12934 || ',LAST_LOGIC_UPDATE,DELETED_FLAG,PERSISTENT_PROJECT_ID'
12935 || ' '
12936 || ',MODEL_TYPE,:3,:4'
12937 || ' '
12938 || ',:5,:6,:7'
12939 || ' '
12940 || ',:8,:9,POST_MIGR_CHANGE_FLAG,config_engine_type'
12941 || ' '
12942 || 'FROM cz_devl_projects'
12943 || ' '
12944 || 'WHERE cz_devl_projects.devl_project_id = '
12945 || TO_CHAR(p_old_model_id)
12946 || '; END; ';
12947
12948 EXECUTE IMMEDIATE l_sql_query
12949 USING p_new_model_id
12950 ,cz_pb_mgr.v_devl_orig_sys_ref
12951 ,cz_pb_mgr.l_bom_caption_rule
12952 ,cz_pb_mgr.l_nonbom_capt_rule_id
12953 ,cz_pb_mgr.l_devl_proj_org_id
12954 ,cz_pb_mgr.l_devl_proj_inv_id
12955 ,cz_pb_mgr.l_devl_proj_product_key
12956 ,cz_pb_mgr.l_bom_caption_text_id
12957 ,cz_pb_mgr.l_nonbom_caption_text_id;
12958 END IF;
12959
12960 COMMIT;
12961 EXCEPTION
12962 WHEN OTHERS
12963 THEN
12964 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERTION_ERR', 'TABLENAME', 'cz_devl_projects', 'SQLERRM', SQLERRM);
12965 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
12966 x_status := PUBLICATION_ERROR;
12967 RAISE;
12968 END insert_devl_projects;
12969
12970 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12971 ---------procedure retrieves the value of sequence incrementor
12972 PROCEDURE get_seq_incrementor(x_oraclesequenceincr IN OUT NOCOPY cz_db_settings.VALUE%TYPE)
12973 AS
12974 BEGIN
12975 SELECT VALUE
12976 INTO x_oraclesequenceincr
12977 FROM cz_db_settings
12978 WHERE cz_db_settings.setting_id = sequence_incr_str;
12979 EXCEPTION
12980 WHEN OTHERS
12981 THEN
12982 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_INCR');
12983 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.SEQINCR', SQLCODE);
12984 x_oraclesequenceincr := 20;
12985 END;
12986
12987 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
12988 -----procedure retrieves copy rules flag
12989 PROCEDURE get_copy_rules_flg(x_copyrules IN OUT NOCOPY VARCHAR2)
12990 AS
12991 BEGIN
12992 IF (cz_pb_mgr.v_session_parameter = pub_model)
12993 THEN
12994 SELECT VALUE
12995 INTO x_copyrules
12996 FROM cz_db_settings
12997 WHERE cz_db_settings.setting_id = rule_copy;
12998 ELSE
12999 x_copyrules := copy_rules;
13000 END IF;
13001 EXCEPTION
13002 WHEN OTHERS
13003 THEN
13004 x_copyrules := 'YES';
13005 END;
13006
13007 ------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13008 -----procedure that uploads publication data
13009 ----@p_publication_id : publication request id on the source database
13010 PROCEDURE upload_publication_data(p_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE)
13011 AS
13015 v_prev_export_status cz_model_publications.export_status%TYPE;
13012 v_new_ui_def_id cz_model_publications.ui_def_id%TYPE;
13013 v_remote_model cz_model_publications.model_id%TYPE;
13014 v_prev_publication_id cz_model_publications.publication_id%TYPE;
13016 BEGIN
13017 pbdebug := 22036;
13018 -------------update the status in cz_model_publications and model exports
13019 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);
13020 ------------get new publication id for the target publication
13021 get_new_publication_id(p_publication_id
13022 ,cz_pb_mgr.v_cz_model_pub_old_id
13023 ,cz_pb_mgr.v_cz_model_pub_new_id
13024 ,cz_pb_mgr.remote_publication_id
13025 ,cz_pb_mgr.v_status_code
13026 );
13027 ------get new ui_def_id for the target publication
13028 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);
13029
13030 -------get model id for target publication
13031 IF (g_object_type = MODEL_PUBLICATION) THEN
13032 get_new_model_id(p_publication_id, v_models_to_be_exported_new, v_remote_model, cz_pb_mgr.v_status_code);
13033 ELSE -- not supported
13034 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);
13035 END IF;
13036
13037 -----------get previous publication id and status
13038 get_prev_publication(cz_pb_mgr.v_ui_str
13039 ,cz_pb_mgr.v_session_parameter
13040 ,cz_pb_mgr.remote_publication_id
13041 ,v_prev_publication_id
13042 ,v_prev_export_status
13043 ,cz_pb_mgr.v_prev_remote_publication_id
13044 ,cz_pb_mgr.v_status_code
13045 );
13046 --------insert the new publication into cz_model_publications table of the target db
13047 insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
13048 ,cz_pb_mgr.v_cz_model_pub_old_id
13049 ,v_remote_model
13050 ,v_new_ui_def_id
13051 ,cz_pb_mgr.v_db_link
13052 ,'NEW'
13053 ,cz_pb_mgr.v_status_code
13054 );
13055
13056 ---------------- insert applicability parameters for tgt publication
13057 IF (g_object_type = MODEL_PUBLICATION)
13058 THEN
13059 insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
13060 ,cz_pb_mgr.v_cz_model_pub_old_id
13061 ,cz_pb_mgr.v_session_parameter
13062 ,cz_pb_mgr.v_db_link
13063 ,cz_pb_mgr.v_status_code
13064 );
13065 END IF;
13066
13067 ------reset status to the original if a re-publish fails
13068 IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP')
13069 THEN
13070 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
13071 THEN
13072 UPDATE cz_model_publications
13073 SET export_status = 'OK'
13074 WHERE publication_id = v_prev_publication_id;
13075 ELSE
13076 UPDATE cz_model_publications
13077 SET deleted_flag = '1'
13078 ,export_status = 'OK'
13079 WHERE publication_id = v_prev_publication_id;
13080
13081 EXECUTE IMMEDIATE 'BEGIN'
13082 || ' '
13083 || 'UPDATE cz_model_publications'
13084 || cz_pb_mgr.v_db_link
13085 || ' '
13086 || ' '
13087 || 'SET deleted_flag = ''1'','
13088 || ' '
13089 || 'export_status = ''OK'''
13090 || ' '
13091 || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
13092 || ' '
13093 || 'END;';
13094 END IF;
13095 END IF;
13096 EXCEPTION
13097 WHEN OTHERS
13098 THEN
13099 cz_pb_mgr.v_err_message := 'Error in upload of PUBLICATION schema for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
13100 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
13101 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
13102 RAISE;
13103 END; /* end of upload of publication schema */
13104
13105 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13106 --Functions used for resolving effectuve usage mask
13107 FUNCTION hextodec(hexnum IN CHAR)
13108 RETURN NUMBER
13109 IS
13110 x NUMBER;
13111 digits NUMBER;
13112 RESULT NUMBER := 0;
13113 current_digit CHAR(1);
13114 current_digit_dec NUMBER;
13115 BEGIN
13116 digits := LENGTH(hexnum);
13117
13118 FOR x IN 1 .. digits
13119 LOOP
13120 current_digit := SUBSTR(hexnum, x, 1);
13121
13122 IF current_digit IN('A', 'B', 'C', 'D', 'E', 'F')
13123 THEN
13127 END IF;
13124 current_digit_dec := ASCII(current_digit) - ASCII('A') + 10;
13125 ELSE
13126 current_digit_dec := TO_NUMBER(current_digit);
13128
13129 RESULT := (RESULT * 16) + current_digit_dec;
13130 END LOOP;
13131
13132 RETURN RESULT;
13133 END hextodec;
13134
13135 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13136 FUNCTION hextobinary(hexnum IN CHAR)
13137 RETURN VARCHAR2
13138 IS
13139 RESULT VARCHAR2(4) := '';
13140 current_digit_dec NUMBER;
13141 BEGIN
13142 IF hexnum IN('A', 'B', 'C', 'D', 'E', 'F', 'a', 'b', 'c', 'd', 'e', 'f')
13143 THEN
13144 current_digit_dec := ASCII(UPPER(hexnum)) - ASCII('A') + 10;
13145 ELSE
13146 current_digit_dec := TO_NUMBER(hexnum);
13147 END IF;
13148
13149 LOOP
13150 RESULT := TO_CHAR(MOD(current_digit_dec, 2)) || RESULT;
13151 current_digit_dec := TRUNC(current_digit_dec / 2);
13152 EXIT WHEN(current_digit_dec < 1);
13153 END LOOP;
13154
13155 RESULT := LPAD(RESULT, 4, '0');
13156 RETURN RESULT;
13157 END hextobinary;
13158
13159 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13160 FUNCTION power_func(p_power IN NUMBER)
13161 RETURN NUMBER
13162 IS
13163 RESULT NUMBER := 1;
13164 BEGIN
13165 FOR x IN 1 .. p_power
13166 LOOP
13167 RESULT := RESULT * 2;
13168 END LOOP;
13169
13170 RETURN RESULT;
13171 END;
13172
13173 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13174 PROCEDURE getUsgNameArray(usagemap VARCHAR2, p_old_usage_name_to_id_map IN OUT NOCOPY cz_pb_mgr.t_usage_name)
13175 AS
13176 l_str VARCHAR2(1) := '';
13177 l_length NUMBER;
13178 l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
13179 l_bits VARCHAR2(64) := '';
13180 current_digit VARCHAR2(1);
13181 l_length1 NUMBER;
13182 l_cnt NUMBER := 0;
13183 l_name VARCHAR2(2000);
13184 l_id NUMBER;
13185 BEGIN
13186 l_length := LENGTH(usagemap);
13187
13188 FOR i IN 1 .. l_length
13189 LOOP
13190 current_digit := SUBSTR(usagemap, i, 1);
13191 l_length1 := LENGTH(l_bits);
13192 l_bits := l_bits || hextobinary(current_digit);
13193 END LOOP;
13194
13195 l_length := LENGTH(l_bits);
13196
13197 FOR i IN 1 .. l_length
13198 LOOP
13199 l_str := SUBSTR(l_bits, -i, 1);
13200
13201 IF (TO_NUMBER(l_str) = 1)
13202 THEN
13203 SELECT NAME, model_usage_id
13204 INTO l_name, l_id
13205 FROM cz_model_usages
13206 WHERE model_usage_id = l_cnt;
13207
13208 p_old_usage_name_to_id_map(l_cnt) := l_name;
13209 END IF;
13210
13211 l_cnt := l_cnt + 1;
13212 END LOOP;
13213 END getUsgNameArray;
13214
13215 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13216 PROCEDURE buildusagemask(usageid IN NUMBER, usagemask IN OUT NOCOPY VARCHAR2)
13217 AS
13218 l_str VARCHAR2(255) DEFAULT NULL;
13219 l_num NUMBER;
13220 l_hex VARCHAR2(16) DEFAULT '0123456789ABCDEF';
13221 BEGIN
13222 l_num := hextodec(usagemask) + power_func(usageid);
13223
13224 LOOP
13225 l_str := SUBSTR(l_hex, MOD(l_num, 16) + 1, 1) || l_str;
13226 l_num := TRUNC(l_num / 16);
13227 EXIT WHEN(l_num = 0);
13228 END LOOP;
13229
13230 usagemask := LPAD(l_str, 16, '0');
13231 END buildusagemask;
13232
13233 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13234 --procedure to resolve effective usage mask for ps nodes and rules.
13235 --Bug #5485126 - p_rules_flag should be 1 when the procedure is called for rules.
13236
13237 PROCEDURE resolve_effective_usage_mask(p_id_to_eff_usg_msk IN t_ref, p_rules_flag IN PLS_INTEGER)
13238 AS
13239 remote_usage ref_cursor;
13240 avail_usage_cur ref_cursor;
13241 -- We start with default mask.
13242 l_previous_mask VARCHAR2(16) := v_default_eff_usg_mask;
13243 l_avail_usage_id NUMBER;
13244 l_effective_usage VARCHAR2(2000);
13245 usageid NUMBER;
13246 l_usage_id cz_model_usages.model_usage_id%TYPE;
13247 l_usage_name cz_model_usages.NAME%TYPE;
13248 l_usage_desc cz_model_usages.description%TYPE;
13249 l_index_ps_to_eff NUMBER;
13250 l_index_usage_name_to_id NUMBER;
13251 l_count NUMBER;
13252 rec_count NUMBER := 0;
13253 l_str VARCHAR2(2000);
13254 BEGIN
13255 IF(p_rules_flag = 1)THEN
13256 cz_pb_mgr.v_new_rul_usg_msk_tbl.DELETE;
13257 ELSE
13258 cz_pb_mgr.v_new_eff_usg_msk_tbl.DELETE;
13259 END IF;
13260
13261 IF (p_id_to_eff_usg_msk.COUNT > 0)
13262 THEN
13263 FOR eff IN p_id_to_eff_usg_msk.FIRST .. p_id_to_eff_usg_msk.LAST
13264 LOOP
13265 rec_count := rec_count + 1;
13266
13267 --Bug #5485126 - if the p_rules_flag is set, use the rule usage mask array.
13268
13269 IF(p_rules_flag = 1)THEN
13270
13271 l_effective_usage := cz_pb_mgr.v_cz_rule_usage_mask_tbl(eff);
13272 ELSE
13273
13274 l_effective_usage := cz_pb_mgr.v_cz_effective_usage_mask_tbl(eff);
13275 END IF;
13276
13277 IF (l_effective_usage <> v_default_eff_usg_mask)
13278 THEN
13282 WHILE(l_index_usage_name_to_id IS NOT NULL)
13279 getUsgNameArray(l_effective_usage, cz_pb_mgr.v_old_usage_name_to_id_map);
13280 l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.FIRST;
13281
13283 LOOP
13284 l_usage_name := cz_pb_mgr.v_old_usage_name_to_id_map(l_index_usage_name_to_id);
13285 l_usage_id := NULL;
13286 l_usage_desc := NULL;
13287 -- At this point we will check if the usage is already been processed
13288 -- we will maintain two arrays
13289 -- 1. having list of all the usage name processed
13290 -- 2. usage name to new remote usage id that is commited.
13291 IF (cz_pb_mgr.g_usg_name_processed.COUNT = 0 OR (NOT cz_pb_mgr.g_usg_name_processed.EXISTS(l_usage_name))) THEN
13292 OPEN remote_usage FOR 'Select model_usage_id, name, description '
13293 || ' '
13294 || 'from cz_model_usages'
13295 || cz_pb_mgr.v_db_link
13296 || ' t'
13297 || ' '
13298 || 'where t.name = :1' USING l_usage_name;
13299
13300 FETCH remote_usage
13301 INTO l_usage_id, l_usage_name, l_usage_desc;
13302
13303 IF (l_usage_id IS NULL)
13304 THEN
13305 OPEN avail_usage_cur FOR 'select min(model_usage_id) from cz_model_usages' || cz_pb_mgr.v_db_link || 'where in_use=''X''';
13306
13307 FETCH avail_usage_cur
13308 INTO l_avail_usage_id;
13309
13310 IF (l_avail_usage_id is null)
13311 THEN
13312 --Raise migration failure.
13313 --Proposed: Usage Limit maxed out during the migration process.
13314 cz_pb_mgr.v_err_message :=
13315 cz_utils.get_text('CZDEV_MAX_USAGES_CREATED_ERR', 'TABLENAME', 'cz_model_usages', 'SQLERRM', SQLERRM);
13316 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.resolve_effective_usage_mask', SQLCODE);
13317 cz_pb_mgr.v_status_code := 0; -- MIGRATION_ERROR;
13318 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
13319 RAISE NO_DATA_FOUND;
13320 ELSE
13321 l_usage_id := l_avail_usage_id;
13322 --Insert into cz_model_usages, use execute immediate
13323 l_str :=
13324 'update cz_model_usages'
13325 || cz_pb_mgr.v_db_link
13326 || ' '
13327 || 'set name = :1,'
13328 || ' '
13329 || 'description = :2,'
13330 || ' '
13331 || 'in_use = ''1'' '
13332 || ' '
13333 || 'where model_usage_id = :3';
13334
13335 EXECUTE IMMEDIATE l_str
13336 USING l_usage_name, l_usage_desc, l_avail_usage_id;
13337
13338 ----------insert into cz_rp_entries
13339 l_str :=
13340 'BEGIN
13341 insert into cz_rp_entries'
13342 || cz_pb_mgr.v_db_link
13343 || ' ( OBJECT_TYPE'
13344 || ' '
13345 || ',OBJECT_ID'
13346 || ' '
13347 || ',ENCLOSING_FOLDER'
13348 || ' '
13349 || ',NAME'
13350 || ' '
13351 || ',DESCRIPTION'
13352 || ' '
13353 || ',DELETED_FLAG'
13354 || ' '
13355 || ',SEEDED_FLAG'
13356 || ' '
13357 || ')'
13358 || ' '
13359 || 'VALUES ( ''USG'' '
13360 || ' '
13361 || ',:1'
13362 || ' '
13363 || ',:2'
13364 || ' '
13365 || ',:3'
13366 || ' '
13367 || ',:4'
13368 || ' '
13369 || ',''0'' '
13370 || ' '
13371 || ',''0'');'
13372 || ' '
13373 || 'commit;'
13374 || ' '
13375 || 'EXCEPTION'
13376 || ' '
13377 || 'WHEN OTHERS THEN'
13378 || ' '
13379 || 'update cz_rp_entries set deleted_flag = ''0'' where object_id = :1;'
13380 || ' '
13381 || 'END;';
13382
13383 EXECUTE IMMEDIATE l_str
13387 END IF;
13384 USING l_avail_usage_id, cz_pb_mgr.g_migration_tgt_folder_id, l_usage_name, l_usage_desc;
13385
13386 COMMIT;
13388 END IF;
13389 cz_pb_mgr.g_usg_name_processed(l_usage_name) := l_usage_id;
13390 END IF;
13391 l_usage_id := cz_pb_mgr.g_usg_name_processed(l_usage_name);
13392 buildusagemask(l_usage_id, l_previous_mask);
13393 l_index_usage_name_to_id := cz_pb_mgr.v_old_usage_name_to_id_map.NEXT(l_index_usage_name_to_id);
13394 END LOOP;
13395
13396 IF(p_rules_flag = 1)THEN
13397 cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := l_previous_mask;
13398 ELSE
13399 cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := l_previous_mask;
13400 END IF;
13401
13402 --Add the new usage mask to the array_of_resolved_mask against the new ps_node_ids.
13403 l_previous_mask := v_default_eff_usg_mask;
13404 cz_pb_mgr.v_old_usage_name_to_id_map.DELETE;
13405 ELSE
13406 IF(p_rules_flag = 1)THEN
13407 cz_pb_mgr.v_new_rul_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
13408 ELSE
13409 cz_pb_mgr.v_new_eff_usg_msk_tbl(rec_count) := v_default_eff_usg_mask;
13410 END IF;
13411 END IF;
13412 END LOOP;
13413 END IF;
13414 END resolve_effective_usage_mask;
13415
13416 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13417 ------procedure to upload ps structure tree
13418 PROCEDURE upload_ps_structure(
13419 p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref
13420 ,p_export_flag IN OUT NOCOPY VARCHAR2
13421 ,x_status IN OUT NOCOPY VARCHAR2
13422 )
13423 AS
13424 v_project_count PLS_INTEGER := 0;
13425 rec_count PLS_INTEGER := 0;
13426 v_cz_model_ref_expls_new_tbl cz_pb_mgr.t_ref;
13427 v_cz_model_ref_expls_old_tbl cz_pb_mgr.t_ref;
13428 plsql_table_list cz_pb_mgr.col_plsql_table_list;
13429 BEGIN
13430 pbdebug := 22037;
13431
13432 ----logging process times
13433 IF (cz_pb_mgr.g_log_timing = publication_timing)
13434 THEN
13435 log_timing_message('start bulk collect of psnodes');
13436 END IF;
13437
13438 -- if model migration, the collection of ps_nodes related stuff has already happened
13439 -- before, so don't redo this.
13440 -- IF (p_models_for_export.COUNT > 0) THEN
13441 -- bulk collect of psnodes moved to mm_loadoldpsnodesforitems() ...
13442 -- END IF; -- end if of p_models_for_export > 0
13443 IF (cz_pb_mgr.g_log_timing = publication_timing)
13444 THEN
13445 log_timing_message('end bulk collect of psnodes');
13446 log_timing_message('start insert_eff_sets');
13447 END IF;
13448
13449 -------------populate effectivity sets table
13450 insert_eff_sets(cz_pb_mgr.v_ps_eff_set_id_tbl
13451 ,cz_pb_mgr.v_cz_eff_sets_old_tbl
13452 ,cz_pb_mgr.v_cz_eff_sets_new_tbl
13453 ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
13454 ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
13455 ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
13456 ,'Eff sets of ps nodes'
13457 );
13458 ------clear_tables('cz_rules','ref',cz_pb_mgr.v_status_code);
13459 -----bulk collect old and new rule ids
13460 bulk_collect_rules(p_export_flag
13461 ,cz_pb_mgr.v_models_to_be_exported
13462 ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
13463 ,cz_pb_mgr.v_cz_rules_rule_id_new_ref
13464 ,cz_pb_mgr.v_cz_rules_rule_id_idx_ref
13465 ,cz_pb_mgr.v_status_code
13466 );
13467
13468 IF (cz_pb_mgr.g_log_timing = publication_timing)
13469 THEN
13470 log_timing_message('end insert_eff_sets');
13471 log_timing_message('start eff sets of ps nodes');
13472 END IF;
13473
13474 -- resolve effective usage mask for rules
13475 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
13476 THEN
13477 resolve_effective_usage_mask(cz_pb_mgr.v_cz_rules_rule_id_old_ref, 1);
13478 END IF;
13479
13480 ---------resolve eff sets
13481 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');
13482
13483 IF (cz_pb_mgr.g_log_timing = publication_timing)
13484 THEN
13485 log_timing_message('end eff sets of ps nodes');
13486 END IF;
13487
13488 -------------insert intl texts for cz_ps_nodes
13489 IF (cz_pb_mgr.g_log_timing = publication_timing)
13490 THEN
13491 log_timing_message('start insert_intl_texts Intl Text of ps nodes');
13492 END IF;
13493
13494 insert_intl_texts(cz_pb_mgr.v_ps_intl_old_tbl, 'Intl Text of ps nodes');
13495
13496 IF (cz_pb_mgr.g_log_timing = publication_timing)
13497 THEN
13498 log_timing_message('end insert_intl_texts Intl Text of ps nodes');
13499 END IF;
13500
13501 IF (cz_pb_mgr.g_log_timing = publication_timing)
13502 THEN
13503 log_timing_message('start Intl Text of ps nodes');
13504 END IF;
13505
13506 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');
13507
13511 END IF;
13508 IF (cz_pb_mgr.g_log_timing = publication_timing)
13509 THEN
13510 log_timing_message('end Intl Text of ps nodes');
13512
13513 -----insert violation text ids
13514 IF (cz_pb_mgr.g_log_timing = publication_timing)
13515 THEN
13516 log_timing_message('start insert_intl_texts Violation text of ps nodes');
13517 END IF;
13518
13519 insert_intl_texts(cz_pb_mgr.v_ps_viol_old_tbl, 'Violation text of ps nodes');
13520
13521 IF (cz_pb_mgr.g_log_timing = publication_timing)
13522 THEN
13523 log_timing_message('end insert_intl_texts Violation text of ps nodes');
13524 END IF;
13525
13526 -------resolve violation text ids
13527 IF (cz_pb_mgr.g_log_timing = publication_timing)
13528 THEN
13529 log_timing_message('start resolve_intl_texts Violation text of ps nodes');
13530 END IF;
13531
13532 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');
13533
13534 IF (cz_pb_mgr.g_log_timing = publication_timing)
13535 THEN
13536 log_timing_message('end resolve_intl_texts Violation text of ps nodes');
13537 END IF;
13538
13539 -------resolve rule ids
13540 IF (cz_pb_mgr.g_log_timing = publication_timing)
13541 THEN
13542 log_timing_message('start resolve caption rule ids in ps nodes');
13543 END IF;
13544
13545 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');
13546
13547 IF (cz_pb_mgr.g_log_timing = publication_timing)
13548 THEN
13549 log_timing_message('end resolve resolve caption rule ids in ps nodes');
13550 END IF;
13551
13552 ------------Resolving ps_ref_id of cz ps nodes
13553 IF (cz_pb_mgr.g_log_timing = publication_timing)
13554 THEN
13555 log_timing_message('start resolve_ids ps_ref_id of cz ps nodes');
13556 END IF;
13557
13558 -- non-exported psnodes actually loaded and put into the map too, so it would be better to load them early too
13559 -- then no special treatment needed for reference_id, component_id, etc
13560 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);
13561
13562 IF (cz_pb_mgr.g_log_timing = publication_timing)
13563 THEN
13564 log_timing_message('end resolve_ids ps_ref_id of cz ps nodes');
13565 END IF;
13566
13567 ------------Resolving component -ids of ps_nodes
13568 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);
13569
13570 -- resolve effective usage mask for ps nodes.
13571 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
13572 THEN
13573 resolve_effective_usage_mask(cz_pb_mgr.v_cz_ps_nodes_old_tbl, 0);
13574 END IF;
13575
13576 -- to verify: the model referred by reverse connector id would always be reexported regardless of having any
13577 -- change or not, if the model having the reverse connector is exported?
13578 -- otherwise, we need to implement resolver_ref_ids_not_found for this column and call that instead
13579 resolve_ids(cz_pb_mgr.g_ps_reverse_connector_tbl, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'psn reverse_connector_id');
13580
13581 plsql_table_list.DELETE;
13582 rec_count := 1;
13583 plsql_table_list(rec_count).col_name := 'ps_node_id';
13584 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_new_tbl';
13585 rec_count := rec_count + 1;
13586 plsql_table_list(rec_count).col_name := 'devl_project_id';
13587 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_devl_project_tbl';
13588 rec_count := rec_count + 1;
13589 plsql_table_list(rec_count).col_name := 'parent_id';
13590 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_parent_id_tbl';
13591 rec_count := rec_count + 1;
13592 plsql_table_list(rec_count).col_name := 'reference_id';
13593 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_refId_old_tbl';
13594 rec_count := rec_count + 1;
13595 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_eff_set_id_tbl';
13596 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
13597 rec_count := rec_count + 1;
13598 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_intl_old_tbl';
13599 plsql_table_list(rec_count).col_name := 'intl_text_id';
13600 rec_count := rec_count + 1;
13601 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_viol_old_tbl';
13602 plsql_table_list(rec_count).col_name := 'violation_text_id';
13603 rec_count := rec_count + 1;
13604 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_orig_sys_tbl';
13605 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
13606 rec_count := rec_count + 1;
13607 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_path_tbl';
13608 plsql_table_list(rec_count).col_name := 'component_sequence_path';
13609 rec_count := rec_count + 1;
13610 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_comp_seq_id_tbl';
13611 plsql_table_list(rec_count).col_name := 'component_sequence_id';
13612 rec_count := rec_count + 1;
13613 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ps_capt_rule_tbl';
13614 plsql_table_list(rec_count).col_name := 'displayname_capt_rule_id';
13615 rec_count := rec_count + 1;
13619 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_uits_add_tbl';
13616 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ps_nodes_comp_tbl';
13617 plsql_table_list(rec_count).col_name := 'component_id';
13618 rec_count := rec_count + 1;
13620 plsql_table_list(rec_count).col_name := 'UI_TIMESTAMP_ADD';
13621
13622 rec_count := rec_count + 1;
13623 plsql_table_list(rec_count).col_name := 'reverse_connector_id';
13624 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_ps_reverse_connector_tbl';
13625
13626 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
13627 THEN
13628 rec_count := rec_count + 1;
13629 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_eff_usg_msk_tbl';
13630 plsql_table_list(rec_count).col_name := 'effective_usage_mask';
13631 mm_resync_ps_items;
13632 rec_count := rec_count + 1;
13633 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ps_item_id_tbl';
13634 plsql_table_list(rec_count).col_name := 'item_id';
13635 END IF;
13636
13637 IF (cz_pb_mgr.g_log_timing = publication_timing)
13638 THEN
13639 log_timing_message('start insert_into_table of cz ps nodes');
13640 END IF;
13641
13642 insert_into_table('cz_ps_nodes'
13643 ,'ps_node_id'
13644 ,cz_pb_mgr.v_db_link
13645 ,plsql_table_list
13646 ,'cz_pb_mgr.v_cz_ps_nodes_old_tbl'
13647 ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
13648 );
13649
13650 IF (cz_pb_mgr.g_log_timing = publication_timing)
13651 THEN
13652 log_timing_message('end insert_into_table of cz ps nodes');
13653 END IF;
13654
13655 -----------update reference id of cz_ps_nodes of the target server for the models not exported
13656 IF (cz_pb_mgr.g_log_timing = publication_timing)
13657 THEN
13658 log_timing_message('start update_remote_reference_ids');
13659 END IF;
13660
13661 update_remote_reference_ids(cz_pb_mgr.v_models_not_to_be_exported
13662 ,cz_pb_mgr.v_cz_ps_nodes_new_tbl
13663 ,cz_pb_mgr.v_server_id
13664 ,cz_pb_mgr.v_status_code
13665 );
13666
13667 IF (cz_pb_mgr.g_log_timing = publication_timing)
13668 THEN
13669 log_timing_message('end update_remote_reference_ids');
13670 END IF;
13671
13672 --------------Populating cz_model_ref_expls table of the target database
13673 clear_tables('cz_model_ref_expls', 'ref', cz_pb_mgr.v_status_code);
13674
13675 IF (p_models_for_export.COUNT > 0)
13676 THEN
13677 IF (cz_pb_mgr.g_log_timing = publication_timing)
13678 THEN
13679 log_timing_message('start bulk collect of model_ref_expls');
13680 END IF;
13681
13682 FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
13683 LOOP
13684 v_cz_model_ref_expls_new_tbl.DELETE;
13685 v_cz_model_ref_expls_old_tbl.DELETE;
13686 clear_tables('cz_model_ref_expls', 'tbl', cz_pb_mgr.v_status_code);
13687
13688 BEGIN
13689 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_ref_expls_seq
13690 , 'cz_model_ref_expls_s.nextval' || cz_pb_mgr.v_db_link
13691 ,cz_pb_mgr.v_oraclesequenceincr
13692 )
13693 ,model_ref_expl_id, component_id, parent_expl_node_id, child_model_expl_id
13694 ,referring_node_id, model_id
13695 BULK COLLECT INTO v_cz_model_ref_expls_new_tbl
13696 ,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
13697 ,cz_pb_mgr.v_referring_node_id_tbl, cz_pb_mgr.v_ref_model_id_tbl
13698 FROM cz_model_ref_expls t
13699 WHERE t.model_id = p_models_for_export(i) AND t.deleted_flag = '0';
13700 EXCEPTION
13701 WHEN OTHERS
13702 THEN
13703 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_model_ref_expls', 'SQLERRM', SQLERRM);
13704 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
13705 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
13706 RAISE;
13707 END;
13708
13709 rec_count := cz_pb_mgr.v_cz_model_ref_expls_new_ref.COUNT;
13710
13711 IF (v_cz_model_ref_expls_new_tbl.COUNT > 0)
13712 THEN
13713 FOR k IN v_cz_model_ref_expls_new_tbl.FIRST .. v_cz_model_ref_expls_new_tbl.LAST
13714 LOOP
13715 rec_count := rec_count + 1;
13716 cz_pb_mgr.v_cz_model_ref_expls_new_ref(rec_count) := v_cz_model_ref_expls_new_tbl(k);
13717 cz_pb_mgr.v_cz_model_ref_expls_old_ref(rec_count) := v_cz_model_ref_expls_old_tbl(k);
13718 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);
13719 cz_pb_mgr.v_component_id_old_ref(rec_count) := cz_pb_mgr.v_component_id_old_tbl(k);
13720 cz_pb_mgr.v_parent_expl_id_ref(rec_count) := cz_pb_mgr.v_parent_expl_id_tbl(k);
13724 END LOOP;
13721 cz_pb_mgr.v_child_expl_id_ref(rec_count) := cz_pb_mgr.v_child_expl_id_tbl(k);
13722 cz_pb_mgr.v_referring_node_id_ref(rec_count) := cz_pb_mgr.v_referring_node_id_tbl(k);
13723 cz_pb_mgr.v_ref_model_id_ref(rec_count) := cz_pb_mgr.v_ref_model_id_tbl(k);
13725 END IF;
13726 END LOOP; /* end loop of FOR I IN p_models_for_export */
13727 END IF; /* end if of p_models_for_export.COUNT > 0 */
13728
13729 IF (cz_pb_mgr.g_log_timing = publication_timing)
13730 THEN
13731 log_timing_message('end bulk collect of model_ref_expls');
13732 END IF;
13733
13734 ------------Resolve parent expl ids of model_ref_expls
13735 IF (cz_pb_mgr.g_log_timing = publication_timing)
13736 THEN
13737 log_timing_message('start resolve_ids parent ids of cz_model_ref_expls');
13738 END IF;
13739
13740 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');
13741
13742 IF (cz_pb_mgr.g_log_timing = publication_timing)
13743 THEN
13744 log_timing_message('end resolve_ids parent ids of cz_model_ref_expls');
13745 END IF;
13746
13747 -------------resolve model id of model_ref_expls
13748 IF (cz_pb_mgr.g_log_timing = publication_timing)
13749 THEN
13750 log_timing_message('start resolve_ids model id of cz_model_ref_expls');
13751 END IF;
13752
13753 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');
13754
13755 IF (cz_pb_mgr.g_log_timing = publication_timing)
13756 THEN
13757 log_timing_message('end resolve_ids model id of cz_model_ref_expls');
13758 END IF;
13759
13760 ----------resolving referring node ids of model ref expls
13761 IF (cz_pb_mgr.g_log_timing = publication_timing)
13762 THEN
13763 log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
13764 END IF;
13765
13766 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13767 ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
13768 ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
13769 ,cz_pb_mgr.v_referring_node_id_ref
13770 ,'cz_model_ref_expl.referring_node_id'
13771 ,cz_pb_mgr.v_status_code
13772 );
13773
13774 IF (cz_pb_mgr.g_log_timing = publication_timing)
13775 THEN
13776 log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.referring_node_id');
13777 END IF;
13778
13779 -----------resolve child expl ids
13780 IF (cz_pb_mgr.g_log_timing = publication_timing)
13781 THEN
13782 log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
13783 END IF;
13784
13785 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13786 ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
13787 ,cz_pb_mgr.v_cz_model_ref_expls_idx_ref
13788 ,cz_pb_mgr.v_child_expl_id_ref
13789 ,'cz_model_ref_expl.child_expl_id'
13790 ,cz_pb_mgr.v_status_code
13791 );
13792
13793 IF (cz_pb_mgr.g_log_timing = publication_timing)
13794 THEN
13795 log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.child_expl_id');
13796 END IF;
13797
13798 ----------resolving component_id of model ref expls
13799 IF (cz_pb_mgr.g_log_timing = publication_timing)
13800 THEN
13801 log_timing_message('start resolve_ref_ids_not_found cz_model_ref_expl.component_id');
13802 END IF;
13803
13804 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13805 ,cz_pb_mgr.v_cz_ps_nodes_old_tbl
13806 ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
13807 ,cz_pb_mgr.v_component_id_old_ref
13808 ,'cz_model_ref_expl.component_id'
13809 ,cz_pb_mgr.v_status_code
13810 );
13811
13812 IF (cz_pb_mgr.g_log_timing = publication_timing)
13813 THEN
13814 log_timing_message('end resolve_ref_ids_not_found cz_model_ref_expl.component_id');
13815 END IF;
13816
13817 ----------populate target root model id
13818 IF (p_models_for_export.COUNT > 0)
13819 THEN
13820 FOR i IN p_models_for_export.FIRST .. p_models_for_export.LAST
13821 LOOP
13822 IF (p_models_for_export(i) = cz_pb_mgr.v_root_model_id)
13823 THEN
13824 cz_pb_mgr.target_root_model_id := cz_pb_mgr.v_models_to_be_exported_new(i);
13825 EXIT;
13826 END IF;
13827 END LOOP;
13828 END IF;
13829
13830 --------populate plsql_table_list for model_ref_expls
13831 plsql_table_list.DELETE;
13832 rec_count := 1;
13833 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
13834 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_model_ref_expls_new_ref';
13835 rec_count := rec_count + 1;
13836 plsql_table_list(rec_count).col_name := 'parent_expl_node_id';
13840 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_component_id_old_ref';
13837 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_parent_expl_id_ref';
13838 rec_count := rec_count + 1;
13839 plsql_table_list(rec_count).col_name := 'component_id';
13841 rec_count := rec_count + 1;
13842 plsql_table_list(rec_count).col_name := 'model_id';
13843 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ref_model_id_ref';
13844 rec_count := rec_count + 1;
13845 plsql_table_list(rec_count).col_name := 'referring_node_id';
13846 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_referring_node_id_ref';
13847 rec_count := rec_count + 1;
13848 plsql_table_list(rec_count).col_name := 'child_model_expl_id';
13849 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_child_expl_id_ref';
13850
13851 IF (cz_pb_mgr.g_log_timing = publication_timing)
13852 THEN
13853 log_timing_message('start insert_into_table cz_model_ref_expls');
13854 END IF;
13855
13856 insert_into_table('cz_model_ref_expls'
13857 ,'model_ref_expl_id'
13858 ,cz_pb_mgr.v_db_link
13859 ,plsql_table_list
13860 ,'cz_pb_mgr.v_cz_model_ref_expls_old_ref'
13861 ,cz_pb_mgr.v_cz_model_ref_expls_old_ref
13862 );
13863
13864 IF (cz_pb_mgr.g_log_timing = publication_timing)
13865 THEN
13866 log_timing_message('end insert_into_table cz_model_ref_expls');
13867 END IF;
13868
13869 -----------------------resolution of non virtual components
13870 IF (cz_pb_mgr.g_log_timing = publication_timing)
13871 THEN
13872 log_timing_message('start resolve_virtual_components');
13873 END IF;
13874
13875 resolve_virtual_components(cz_pb_mgr.v_cz_model_ref_expls_new_ref
13876 ,cz_pb_mgr.v_models_not_to_be_exported
13877 ,cz_pb_mgr.v_server_id
13878 ,cz_pb_mgr.v_status_code
13879 );
13880
13881 IF (cz_pb_mgr.g_log_timing = publication_timing)
13882 THEN
13883 log_timing_message('end resolve_virtual_components');
13884 END IF;
13885
13886 -------get func comp spec by expl id
13887 IF (cz_pb_mgr.v_session_parameter IN(pub_model, cz_model_migration_pvt.migrate_model))
13888 THEN
13889 collect_func_comp_specs;
13890 ELSIF(cz_pb_mgr.v_session_parameter = model_copy)
13891 THEN
13892 IF (cz_pb_mgr.copy_rules = 'YES')
13893 THEN
13894 collect_func_comp_specs;
13895 END IF;
13896 END IF;
13897
13898 ---------release local pl/sql tables
13899 v_cz_model_ref_expls_new_tbl.DELETE;
13900 v_cz_model_ref_expls_old_tbl.DELETE;
13901 EXCEPTION
13902 WHEN OTHERS
13903 THEN
13904 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
13905 x_status := PUBLICATION_ERROR;
13906 RAISE pb_upload_ps_schema;
13907 END upload_ps_structure; /* end of export of product structure */
13908
13909 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13910 PROCEDURE insert_ui_node_props(p_ui_def_id_tbl IN cz_pb_mgr.t_ref)
13911 AS
13912 l_prop_node_tbl cz_pb_mgr.t_ref;
13913 l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
13914 l_rec_count NUMBER := 0;
13915 BEGIN
13916 IF p_ui_def_id_tbl.COUNT > 0
13917 THEN
13918 cz_pb_mgr.g_ui_node_prop_new_node_tbl.DELETE;
13919 cz_pb_mgr.g_ui_node_prop_old_node_tbl.DELETE;
13920 cz_pb_mgr.g_ui_node_prop_new_uidf_tbl.DELETE;
13921 cz_pb_mgr.g_ui_node_prop_old_uidf_tbl.DELETE;
13922
13923 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
13924 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
13925 LOOP
13926 l_prop_node_tbl.DELETE;
13927
13928 SELECT DISTINCT prop.ui_node_id
13929 BULK COLLECT INTO l_prop_node_tbl
13930 FROM cz_ui_node_props prop, cz_ui_nodes node
13931 WHERE prop.ui_def_id = node.ui_def_id
13932 AND prop.ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(i)
13933 AND node.ui_node_id = prop.ui_node_id
13934 AND node.deleted_flag = record_not_deleted
13935 AND prop.deleted_flag = record_not_deleted;
13936
13937 IF l_prop_node_tbl.COUNT > 0
13938 THEN
13939 l_rec_count := cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT;
13940
13941 FOR j IN l_prop_node_tbl.FIRST .. l_prop_node_tbl.LAST
13942 LOOP
13943 l_rec_count := l_rec_count + 1;
13944 cz_pb_mgr.g_ui_node_prop_new_node_tbl(l_rec_count) := l_prop_node_tbl(j);
13945 cz_pb_mgr.g_ui_node_prop_old_node_tbl(l_rec_count) := l_prop_node_tbl(j);
13946 cz_pb_mgr.g_ui_node_prop_new_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
13947 cz_pb_mgr.g_ui_node_prop_old_uidf_tbl(l_rec_count) := cz_pb_mgr.v_cz_ui_defs_old_ref(i);
13948 END LOOP;
13949 END IF;
13950 END LOOP;
13951 END IF;
13952
13953 IF cz_pb_mgr.g_ui_node_prop_new_node_tbl.COUNT > 0
13954 THEN
13955 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');
13959 l_plsql_table_list(2).col_name := 'ui_def_id';
13956 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');
13957 l_plsql_table_list(1).col_name := 'ui_node_id';
13958 l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_ui_node_prop_new_node_tbl';
13960 l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_ui_node_prop_new_uidf_tbl';
13961 insert_into_table('cz_ui_node_props'
13962 ,'ui_node_id'
13963 ,'ui_def_id'
13964 ,cz_pb_mgr.v_db_link
13965 ,l_plsql_table_list
13966 ,'cz_pb_mgr.g_ui_node_prop_old_node_tbl'
13967 ,'cz_pb_mgr.g_ui_node_prop_old_uidf_tbl'
13968 ,cz_pb_mgr.g_ui_node_prop_old_node_tbl
13969 ,cz_pb_mgr.g_ui_node_prop_old_uidf_tbl
13970 );
13971 END IF;
13972 END IF;
13973
13974 COMMIT;
13975 EXCEPTION
13976 WHEN OTHERS
13977 THEN
13978 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_ui_node_props', 'ERR', SQLERRM);
13979 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.NODEPROPS', SQLCODE);
13980 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
13981 END insert_ui_node_props;
13982
13983 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
13984 PROCEDURE synch_master_template
13985 AS
13986 remote_mt ref_cursor;
13987 rec_count NUMBER;
13988 l_mt_gen_id t_ref;
13989 l_mt_old_id t_ref;
13990 l_mt_name t_mt_name;
13991 l_mt_id NUMBER;
13992 mt_idx NUMBER;
13993 plsql_table_list cz_pb_mgr.col_plsql_table_list;
13994 l_rec_count NUMBER;
13995 BEGIN
13996 cz_pb_mgr.v_mt_name.DELETE;
13997 cz_pb_mgr.v_mt_name_ref.DELETE;
13998 cz_pb_mgr.v_mt_gen_id.DELETE;
13999 cz_pb_mgr.v_mt_old_id_tbl.DELETE;
14000 cz_pb_mgr.v_mt_old_only.DELETE;
14001 cz_pb_mgr.v_new_mt_id_ref.DELETE;
14002 cz_pb_mgr.v_new_mt_id_tbl.DELETE;
14003 cz_pb_mgr.g_mt_obj_type.DELETE;
14004
14005 -- 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
14006 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
14007 FOR ui IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14008 LOOP
14009 -- Andrew is going to provide with a query to fetch master template for given ui def id.
14010 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)
14011 ,ui_def_id, NAME
14012 BULK COLLECT INTO l_mt_gen_id
14013 ,l_mt_old_id, l_mt_name
14014 FROM cz_ui_defs mstr
14015 WHERE mstr.deleted_flag = '0'
14016 AND mstr.master_template_flag = '1'
14017 AND mstr.seeded_flag = '0'
14018 AND EXISTS(SELECT 1
14019 FROM cz_ui_defs udf
14020 WHERE udf.from_master_template_id = mstr.ui_def_id AND ui_def_id = cz_pb_mgr.v_cz_ui_defs_old_ref(ui));
14021
14022 -- keep a running array for l_mt_names
14023 rec_count := v_mt_name.COUNT;
14024
14025 IF (l_mt_old_id.COUNT > 0)
14026 THEN
14027 FOR m IN l_mt_old_id.FIRST .. l_mt_old_id.LAST
14028 LOOP
14029 IF (cz_pb_mgr.v_mt_name_ref.COUNT = 0 OR NOT cz_pb_mgr.v_mt_name_ref.EXISTS(l_mt_name(m)))
14030 THEN
14031 rec_count := rec_count + 1;
14032 cz_pb_mgr.v_mt_name(rec_count) := l_mt_name(m);
14033 cz_pb_mgr.v_mt_name_ref(l_mt_name(m)) := m;
14034 cz_pb_mgr.v_mt_old_id_tbl(rec_count) := l_mt_old_id(m);
14035 cz_pb_mgr.v_mt_gen_id(rec_count) := l_mt_gen_id(m);
14036 END IF;
14037 END LOOP;
14038 END IF;
14039 END LOOP;
14040 END IF;
14041
14042 -- loop through the array list to check name on the remote server
14043 IF (cz_pb_mgr.v_mt_name.COUNT > 0)
14044 THEN
14045 rec_count := 0;
14046 cz_pb_mgr.v_mt_old_id_ref.DELETE;
14047
14048 FOR n IN cz_pb_mgr.v_mt_name.FIRST .. cz_pb_mgr.v_mt_name.LAST
14049 LOOP
14050 --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
14051 l_mt_id := NULL;
14052 rec_count := rec_count + 1;
14053
14054 OPEN remote_mt FOR 'Select ui_def_id'
14055 || ' '
14056 || 'from cz_ui_defs'
14057 || cz_pb_mgr.v_db_link
14058 || 't'
14059 || ' '
14060 || 'where t.deleted_flag = ''0'' and t.master_template_flag = ''1'' and t.name = :1' USING cz_pb_mgr.v_mt_name(n);
14061
14062 FETCH remote_mt
14063 INTO l_mt_id;
14064
14065 IF (l_mt_id IS NOT NULL)
14066 THEN
14067 cz_pb_mgr.v_mt_old_to_new_id(cz_pb_mgr.v_mt_old_id_tbl(n)) := l_mt_id;
14068 cz_pb_mgr.v_mt_id_ref(rec_count) := l_mt_id;
14069 ELSE
14070 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);
14071 cz_pb_mgr.v_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
14075 --END IF;
14072 cz_pb_mgr.v_new_mt_id_ref(rec_count) := cz_pb_mgr.v_mt_gen_id(n);
14073 cz_pb_mgr.v_mt_old_id_ref(rec_count) := cz_pb_mgr.v_mt_old_id_tbl(n);
14074 END IF;
14076 END LOOP;
14077
14078 rec_count := 0;
14079 cz_pb_mgr.g_mt_obj_type.DELETE;
14080 cz_pb_mgr.g_mt_enclosing_fld_rp_entry.DELETE;
14081 mt_idx := cz_pb_mgr.v_new_mt_id_ref.FIRST;
14082
14083 WHILE(mt_idx IS NOT NULL)
14084 LOOP
14085 rec_count := rec_count + 1;
14086 cz_pb_mgr.v_new_mt_id_tbl(rec_count) := cz_pb_mgr.v_new_mt_id_ref(mt_idx);
14087 cz_pb_mgr.g_mt_obj_type(rec_count) := 'UMT';
14088 cz_pb_mgr.g_mt_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
14089 mt_idx := cz_pb_mgr.v_new_mt_id_ref.NEXT(mt_idx);
14090 END LOOP;
14091
14092 IF (cz_pb_mgr.v_new_mt_id_tbl.COUNT > 0)
14093 THEN
14094 --------populate plsql_table_list for ui_defs
14095 --null values in arrays will cause insert problems
14096 --so pack v_mt_old_id_ref into a non empty array
14097 --it can get into this situation where there are some m
14098 --master templates that need to migrated, but there are some that
14099 --don't need to be migrated.
14100 l_rec_count := 0;
14101
14102 IF (cz_pb_mgr.v_mt_old_id_ref.COUNT > 0) THEN
14103 FOR m IN cz_pb_mgr.v_mt_old_id_ref.FIRST .. cz_pb_mgr.v_mt_old_id_ref.LAST
14104 LOOP
14105 IF (cz_pb_mgr.v_mt_old_id_ref(m) IS NOT NULL)
14106 THEN
14107 l_rec_count := l_rec_count + 1;
14108 cz_pb_mgr.v_mt_old_only(l_rec_count) := cz_pb_mgr.v_mt_old_id_ref(m);
14109 END IF;
14110 END LOOP;
14111 END IF;
14112
14113 plsql_table_list.DELETE;
14114 rec_count := 1;
14115 plsql_table_list(rec_count).col_name := 'ui_def_id';
14116 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
14117 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);
14118 ----------begin insert into cz_rp_entries----------------
14119 plsql_table_list.DELETE;
14120 rec_count := 1;
14121 plsql_table_list(rec_count).col_name := 'object_id';
14122 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_mt_id_tbl';
14123 rec_count := rec_count + 1;
14124 plsql_table_list(rec_count).col_name := 'object_type';
14125 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_obj_type';
14126 rec_count := rec_count + 1;
14127 plsql_table_list(rec_count).col_name := 'enclosing_folder';
14128 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_mt_enclosing_fld_rp_entry';
14129 insert_into_rp_entries('cz_rp_entries'
14130 ,'object_id'
14131 ,'object_type'
14132 ,cz_pb_mgr.v_db_link
14133 ,plsql_table_list
14134 ,'cz_pb_mgr.v_mt_old_only'
14135 ,'cz_pb_mgr.g_mt_obj_type'
14136 ,cz_pb_mgr.v_mt_old_only
14137 ,cz_pb_mgr.g_mt_obj_type
14138 );
14139 ----------end insert into cz_rp_entries----------------
14140 END IF;
14141 END IF;
14142 END synch_master_template;
14143
14144 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14145 --------procedure that uploads UI schema
14146 PROCEDURE upload_ui_schema(p_models_for_export IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2,
14147 p_copy_nonjradui IN BOOLEAN DEFAULT TRUE)
14148 AS
14149 plsql_table_list cz_pb_mgr.col_plsql_table_list;
14150 rec_count PLS_INTEGER := 0;
14151 v_ui_node_count PLS_INTEGER := 0;
14152 v_cz_ui_defs_old_tbl cz_pb_mgr.t_ref;
14153 v_ui_devl_id_tbl cz_pb_mgr.t_ref;
14154 v_ui_comp_id_tbl cz_pb_mgr.t_ref;
14155 v_ui_rf_id_tbl cz_pb_mgr.t_ref;
14156 v_cz_ui_nodes_new_tbl cz_pb_mgr.t_ref;
14157 v_cz_ui_nodes_old_tbl cz_pb_mgr.t_ref;
14158 v_cz_ui_nodes_ui_def_id_tbl cz_pb_mgr.t_ref;
14159 v_cz_ui_nodes_parent_id_tbl cz_pb_mgr.t_ref;
14160 v_cz_ui_nodes_ui_ref_id_tbl cz_pb_mgr.t_ref;
14161 v_cz_ui_nodes_ps_node_id_tbl cz_pb_mgr.t_ref;
14162 v_cz_ui_nodes_component_id_tbl cz_pb_mgr.t_ref;
14163 v_cz_ui_nodes_ui_dref_id_tbl cz_pb_mgr.t_ref;
14164 v_cz_ui_nodes_expl_id_tbl cz_pb_mgr.t_ref;
14165 v_cz_ui_nodes_fcomp_id_tbl cz_pb_mgr.t_ref;
14166 v_cz_ui_nodes_capt_id_tbl cz_pb_mgr.t_ref;
14167 v_cz_ui_nodes_tool_id_tbl cz_pb_mgr.t_ref;
14168 v_menu_capt_rule_tbl cz_pb_mgr.t_ref;
14169 v_page_capt_rule_tbl cz_pb_mgr.t_ref;
14170 l_from_mt_id_tbl cz_pb_mgr.t_ref;
14171 BEGIN
14172 pbdebug := 22038;
14173
14174 IF ((cz_pb_mgr.copy_uis <> 'YES') AND(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy))
14175 THEN
14176 cz_pb_mgr.v_root_ui_def_id := -999;
14177 END IF;
14178
14179 IF (cz_pb_mgr.g_log_timing = publication_timing)
14180 THEN
14181 log_timing_message('start bulk collect of ui defs');
14182 END IF;
14183
14187
14184 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;
14185
14186 clear_tables('cz_ui_defs', 'ref', cz_pb_mgr.v_status_code);
14188 IF (p_models_for_export.COUNT > 0) THEN
14189 -- not copy non-jrad ui in any conversion session or in a copy session flagged by p_copy_nonjradui
14190 IF NOT (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 OR
14191 cz_pb_mgr.v_session_parameter=model_copy AND NOT p_copy_nonjradui) THEN
14192 get_source_uis(cz_pb_mgr.v_root_model_id, p_models_for_export, cz_pb_mgr.v_cz_ui_defs_old_ref);
14193 END IF;
14194 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);
14195
14196 --get_oa_tmpls is also called from has_to_be_published.
14197 --However, for model migration, has_to_be_published
14198 --is not called. So make the call to get_oa_tmpls here.
14199 IF cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0 THEN
14200 get_oa_tmpls;
14201 END IF;
14202
14203 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
14204 THEN
14205 rec_count := cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT;
14206
14207 FOR k IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14208 LOOP
14209 rec_count := rec_count + 1;
14210 cz_pb_mgr.v_cz_ui_defs_new_ref(rec_count) :=
14211 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_defs_seq
14212 , 'cz_ui_defs_s.NEXTVAL' || cz_pb_mgr.v_db_link
14213 ,cz_pb_mgr.v_oraclesequenceincr
14214 );
14215 END LOOP;
14216 END IF; /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
14217 END IF;
14218
14219 IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
14220 THEN
14221 FOR m IN cz_pb_mgr.v_cz_ui_defs_new_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_new_ref.LAST
14222 LOOP
14223 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);
14224 END LOOP;
14225 END IF;
14226
14227 get_uis_of_mdls_not_exported(cz_pb_mgr.v_models_not_to_be_exported,
14228 cz_pb_mgr.v_cz_ui_defs_idx_ref,
14229 cz_pb_mgr.v_server_id,
14230 cz_pb_mgr.v_status_code);
14231
14232 IF (cz_pb_mgr.g_log_timing = publication_timing)
14233 THEN
14234 log_timing_message('end bulk collect of ui defs');
14235 log_timing_message('start bulk collect of devl_project_ids and component_ids for ui_defs');
14236 END IF;
14237
14238 ---------get devl_project_ids and component_ids for ui_defs
14239 /* We should really re-architect this portion of the code
14240 we have already queried cz_ui_defs before for oa_style UIs in
14241 get_oa_uis and have the menu_caption_rule_id,page_caption_rule_id,
14242 from_master_template_id. We need to query it again here because
14243 we don't have these values for DHTML UIs and insert_into_table for
14244 cz_ui_defs will fail. We should consolidate the querying into one place.
14245 */
14246
14247 IF (cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0)
14248 THEN
14249 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
14250 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14251 LOOP
14252 BEGIN
14253 v_ui_devl_id_tbl.DELETE;
14254 v_ui_comp_id_tbl.DELETE;
14255 v_ui_rf_id_tbl.DELETE;
14256
14257 SELECT devl_project_id, component_id, menu_caption_rule_id, page_caption_rule_id, cz_ui_defs.from_master_template_id
14258 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
14259 FROM cz_ui_defs
14260 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;
14261
14262 rec_count := cz_pb_mgr.v_ui_devl_id_ref.COUNT;
14263
14264 IF (v_ui_devl_id_tbl.COUNT > 0)
14265 THEN
14266 FOR k IN v_ui_devl_id_tbl.FIRST .. v_ui_devl_id_tbl.LAST
14267 LOOP
14268 rec_count := rec_count + 1;
14269 cz_pb_mgr.v_ui_devl_id_ref(rec_count) := v_ui_devl_id_tbl(k);
14270 cz_pb_mgr.v_ui_comp_id_ref(rec_count) := v_ui_comp_id_tbl(k);
14271 cz_pb_mgr.v_ui_defs_mcpt_rule_ref(rec_count) := v_menu_capt_rule_tbl(k);
14272 cz_pb_mgr.v_ui_defs_pcpt_rule_ref(rec_count) := v_page_capt_rule_tbl(k);
14273 v_master_template_id_ref(rec_count) := l_from_mt_id_tbl(k);
14274 END LOOP;
14275 END IF;
14276 EXCEPTION
14277 WHEN OTHERS
14278 THEN
14282 RAISE;
14279 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_defs', 'SQLERRM', SQLERRM);
14280 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
14281 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14283 END;
14284 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_ui_defs_old_ref */
14285 END IF;
14286 END IF; /* end if of cz_pb_mgr.v_cz_ui_defs_new_ref.COUNT > 0 */
14287
14288 IF (cz_pb_mgr.g_log_timing = publication_timing)
14289 THEN
14290 log_timing_message('end bulk collect of devl_project_ids and component_ids for ui_defs');
14291 log_timing_message('start resolve_ids devl project id of cz_ui_defs');
14292 END IF;
14293
14294 ----------resolve devl_project_ids
14295 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');
14296
14297 IF (cz_pb_mgr.g_log_timing = publication_timing)
14298 THEN
14299 log_timing_message('end resolve_ids devl project id of cz_ui_defs');
14300 END IF;
14301
14302 ----------resolve component_ids
14303 IF (cz_pb_mgr.g_log_timing = publication_timing)
14304 THEN
14305 log_timing_message('start resolve_ids component id of cz_ui_defs');
14306 END IF;
14307
14308 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');
14309
14310 IF (cz_pb_mgr.g_log_timing = publication_timing)
14311 THEN
14312 log_timing_message('end resolve_ids component id of cz_ui_defs');
14313 END IF;
14314
14315 ----------resolve component_ids of models not to be exported
14316 IF (cz_pb_mgr.g_log_timing = publication_timing)
14317 THEN
14318 log_timing_message('start component_ids of models not to be exported');
14319 END IF;
14320
14321 IF (cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0)
14322 THEN
14323 FOR k IN cz_pb_mgr.v_ui_comp_id_ref.FIRST .. cz_pb_mgr.v_ui_comp_id_ref.LAST
14324 LOOP
14325 remote_component_id(cz_pb_mgr.v_ui_comp_id_ref(k)
14326 ,cz_pb_mgr.v_models_not_to_be_exported
14327 ,cz_pb_mgr.v_server_id
14328 ,cz_pb_mgr.v_status_code
14329 );
14330 END LOOP;
14331 END IF; /* end if of cz_pb_mgr.v_ui_comp_id_ref.COUNT > 0 */
14332
14333 IF (cz_pb_mgr.g_log_timing = publication_timing)
14334 THEN
14335 log_timing_message('end component_ids of models not to be exported');
14336 END IF;
14337
14338 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');
14339 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');
14340
14341 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
14342 THEN
14343 synch_master_template;
14344 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);
14345 END IF;
14346
14347 --------populate plsql_table_list for ui_defs
14348 plsql_table_list.DELETE;
14349 rec_count := 1;
14350 plsql_table_list(rec_count).col_name := 'ui_def_id';
14351 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
14352 rec_count := rec_count + 1;
14353 plsql_table_list(rec_count).col_name := 'devl_project_id';
14354 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_devl_id_ref';
14355 rec_count := rec_count + 1;
14356 plsql_table_list(rec_count).col_name := 'component_id';
14357 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_comp_id_ref';
14358 rec_count := rec_count + 1;
14359 plsql_table_list(rec_count).col_name := 'menu_caption_rule_id';
14360 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_mcpt_rule_ref';
14361 rec_count := rec_count + 1;
14362 plsql_table_list(rec_count).col_name := 'page_caption_rule_id';
14363 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_ui_defs_pcpt_rule_ref';
14364
14365 ---------insert into cz_ui_defs of target server
14366 IF (cz_pb_mgr.g_log_timing = publication_timing)
14367 THEN
14368 log_timing_message('start insert_into_table cz_ui_defs');
14369 END IF;
14370
14371 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id <> 0)
14372 THEN
14373 rec_count := rec_count + 1;
14374 plsql_table_list(rec_count).col_name := 'from_master_template_id';
14375 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_master_template_id_ref';
14376 END IF;
14377
14378 insert_into_table('cz_ui_defs'
14379 ,'ui_def_id'
14380 ,cz_pb_mgr.v_db_link
14381 ,plsql_table_list
14382 ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
14383 ,cz_pb_mgr.v_cz_ui_defs_old_ref
14387 THEN
14384 );
14385
14386 IF (cz_pb_mgr.g_log_timing = publication_timing)
14388 log_timing_message('end insert_into_table cz_ui_defs');
14389 END IF;
14390
14391 ------export oa uis
14392 IF (cz_pb_mgr.v_cz_ui_defs_old_oa_ref.COUNT > 0) THEN
14393 export_oa_uis;
14394 END IF;
14395
14396 --------populate plsql_table_list for ui_properties
14397 plsql_table_list.DELETE;
14398 rec_count := 1;
14399 plsql_table_list(rec_count).col_name := 'ui_def_id';
14400 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_defs_new_ref';
14401
14402 ------------insert into cz_ui_properties of target server
14403 IF (cz_pb_mgr.g_log_timing = publication_timing)
14404 THEN
14405 log_timing_message('start insert_into_table cz_ui_properties');
14406 END IF;
14407
14408 insert_into_table('cz_ui_properties'
14409 ,'ui_def_id'
14410 ,cz_pb_mgr.v_db_link
14411 ,plsql_table_list
14412 ,'cz_pb_mgr.v_cz_ui_defs_old_ref'
14413 ,cz_pb_mgr.v_cz_ui_defs_old_ref
14414 );
14415
14416 IF (cz_pb_mgr.g_log_timing = publication_timing)
14417 THEN
14418 log_timing_message('end insert_into_table cz_ui_properties');
14419 END IF;
14420
14421 ----------insert ids of cz_ui_nodes
14422 clear_tables('cz_ui_nodes', 'ref', cz_pb_mgr.v_status_code);
14423
14424 IF (cz_pb_mgr.g_log_timing = publication_timing)
14425 THEN
14426 log_timing_message('start bulk collect of cz_ui_nodes');
14427 END IF;
14428
14429 IF (cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0)
14430 THEN
14431 FOR i IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
14432 LOOP
14433 v_cz_ui_nodes_new_tbl.DELETE;
14434 v_cz_ui_nodes_old_tbl.DELETE;
14435 v_cz_ui_nodes_ui_def_id_tbl.DELETE;
14436 v_cz_ui_nodes_parent_id_tbl.DELETE;
14437 v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
14438 v_cz_ui_nodes_ps_node_id_tbl.DELETE;
14439 v_cz_ui_nodes_component_id_tbl.DELETE;
14440 v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
14441 v_cz_ui_nodes_expl_id_tbl.DELETE;
14442 v_cz_ui_nodes_fcomp_id_tbl.DELETE;
14443 v_cz_ui_nodes_capt_id_tbl.DELETE;
14444 v_cz_ui_nodes_tool_id_tbl.DELETE;
14445
14446 BEGIN
14447 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_nodes_seq
14448 , 'cz_ui_nodes_s.nextval' || cz_pb_mgr.v_db_link
14449 ,cz_pb_mgr.v_oraclesequenceincr
14450 )
14451 ,ui_node_id, ui_def_id, parent_id, ui_node_ref_id
14452 ,ui_def_ref_id, ps_node_id, component_id, model_ref_expl_id
14453 ,func_comp_id, caption_id, tool_tip_id
14454 BULK COLLECT INTO v_cz_ui_nodes_new_tbl
14455 ,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
14456 ,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
14457 ,v_cz_ui_nodes_fcomp_id_tbl, v_cz_ui_nodes_capt_id_tbl, v_cz_ui_nodes_tool_id_tbl
14458 FROM cz_ui_nodes
14459 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;
14460 EXCEPTION
14461 WHEN NO_DATA_FOUND
14462 THEN
14463 cz_pb_mgr.v_err_message := 'No ui nodes found for : ' || TO_CHAR(cz_pb_mgr.v_cz_ui_defs_old_ref(i));
14464 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UINODES', SQLCODE);
14465 WHEN OTHERS
14466 THEN
14467 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ui_nodes', 'SQLERRM', SQLERRM);
14468 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
14469 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
14470 RAISE;
14471 END;
14472
14473 IF (v_cz_ui_nodes_new_tbl.COUNT > 0)
14474 THEN
14475 FOR k IN v_cz_ui_nodes_new_tbl.FIRST .. v_cz_ui_nodes_new_tbl.LAST
14476 LOOP
14477 v_ui_node_count := cz_pb_mgr.v_cz_ui_nodes_new_ref.COUNT + 1;
14478 cz_pb_mgr.v_cz_ui_nodes_new_ref(v_ui_node_count) := v_cz_ui_nodes_new_tbl(k);
14479 cz_pb_mgr.v_cz_ui_nodes_old_ref(v_ui_node_count) := v_cz_ui_nodes_old_tbl(k);
14480 cz_pb_mgr.v_cz_ui_nodes_idx_ref(v_cz_ui_nodes_old_tbl(k)):=v_cz_ui_nodes_new_tbl(k);
14481 cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_def_id_tbl(k);
14482 cz_pb_mgr.v_cz_ui_nodes_parent_id_ref(v_ui_node_count) := v_cz_ui_nodes_parent_id_tbl(k);
14483 cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_ref_id_tbl(k);
14484 cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref(v_ui_node_count) := v_cz_ui_nodes_ps_node_id_tbl(k);
14488 cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref(v_ui_node_count) := v_cz_ui_nodes_fcomp_id_tbl(k);
14485 cz_pb_mgr.v_cz_ui_nodes_component_id_ref(v_ui_node_count) := v_cz_ui_nodes_component_id_tbl(k);
14486 cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref(v_ui_node_count) := v_cz_ui_nodes_ui_dref_id_tbl(k);
14487 cz_pb_mgr.v_cz_ui_nodes_expl_id_ref(v_ui_node_count) := v_cz_ui_nodes_expl_id_tbl(k);
14489 cz_pb_mgr.v_cz_ui_nodes_capt_id_ref(v_ui_node_count) := v_cz_ui_nodes_capt_id_tbl(k);
14490 cz_pb_mgr.v_cz_ui_nodes_tool_id_ref(v_ui_node_count) := v_cz_ui_nodes_tool_id_tbl(k);
14491 END LOOP;
14492 END IF; /* end if of v_cz_ui_nodes_new_tbl.COUNT > 0 */
14493 END LOOP;
14494 END IF; /* end if of cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0 */
14495
14496 IF (cz_pb_mgr.g_log_timing = publication_timing)
14497 THEN
14498 log_timing_message('end bulk collect of cz_ui_nodes');
14499 END IF;
14500
14501 ----intl texts of ui nodes
14502 IF (cz_pb_mgr.g_log_timing = publication_timing)
14503 THEN
14504 log_timing_message('start insert_intl_texts caption ids of ui nodes');
14505 END IF;
14506
14507 insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_capt_id_ref, 'Caption ids of ui nodes');
14508
14509 IF (cz_pb_mgr.g_log_timing = publication_timing)
14510 THEN
14511 log_timing_message('end insert_intl_texts caption ids of ui nodes');
14512 END IF;
14513
14514 -----resolve caption ids
14515 IF (cz_pb_mgr.g_log_timing = publication_timing)
14516 THEN
14517 log_timing_message('start resolve_intl_texts caption ids of ui nodes');
14518 END IF;
14519
14520 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');
14521
14522 IF (cz_pb_mgr.g_log_timing = publication_timing)
14523 THEN
14524 log_timing_message('end resolve_intl_texts caption ids of ui nodes');
14525 END IF;
14526
14527 -----insert tool tip ids
14528 IF (cz_pb_mgr.g_log_timing = publication_timing)
14529 THEN
14530 log_timing_message('start insert_intl_texts Tool tip ids of ui nodes');
14531 END IF;
14532
14533 insert_intl_texts(cz_pb_mgr.v_cz_ui_nodes_tool_id_ref, 'Tool tip ids of ui nodes');
14534
14535 IF (cz_pb_mgr.g_log_timing = publication_timing)
14536 THEN
14537 log_timing_message('end insert_intl_texts Tool tip ids of ui nodes');
14538 END IF;
14539
14540 ---------resolve tool tip ids
14541 IF (cz_pb_mgr.g_log_timing = publication_timing)
14542 THEN
14543 log_timing_message('start resolve_intl_texts tool tip ids of ui nodes');
14544 END IF;
14545
14546 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');
14547
14548 IF (cz_pb_mgr.g_log_timing = publication_timing)
14549 THEN
14550 log_timing_message('end resolve_intl_texts tool tip ids of ui nodes');
14551 END IF;
14552
14553 ---------resolve ui def ids of ui nodes
14554 IF (cz_pb_mgr.g_log_timing = publication_timing)
14555 THEN
14556 log_timing_message('start resolve_ids ui def ids of ui nodes');
14557 END IF;
14558
14559 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');
14560
14561 IF (cz_pb_mgr.g_log_timing = publication_timing)
14562 THEN
14563 log_timing_message('end resolve_ids ui def ids of ui nodes');
14564 END IF;
14565
14566 ---------resolve parent ids of ui nodes
14567 IF (cz_pb_mgr.g_log_timing = publication_timing)
14568 THEN
14569 log_timing_message('start resolve_ids parent ids of ui nodes');
14570 END IF;
14571
14572 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');
14573
14574 IF (cz_pb_mgr.g_log_timing = publication_timing)
14575 THEN
14576 log_timing_message('end resolve_ids parent ids of ui nodes');
14577 END IF;
14578
14579 ---------resolve ui node ref ids of ui nodes
14580 IF (cz_pb_mgr.g_log_timing = publication_timing)
14581 THEN
14582 log_timing_message('start resolve_ids ui node ref ids of ui nodes');
14583 END IF;
14584
14585 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);
14586
14587 IF (cz_pb_mgr.g_log_timing = publication_timing)
14588 THEN
14589 log_timing_message('end resolve_ids ui node ref ids of ui nodes');
14590 END IF;
14591
14592 ---------resolve ps node ref ids of ui nodes
14593 IF (cz_pb_mgr.g_log_timing = publication_timing)
14594 THEN
14595 log_timing_message('start resolve_ids ps node ids of ui nodes');
14596 END IF;
14597
14598 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');
14599
14600 IF (cz_pb_mgr.g_log_timing = publication_timing)
14601 THEN
14605 ---------resolve component ids of ui nodes
14602 log_timing_message('end resolve_ids ps node ids of ui nodes');
14603 END IF;
14604
14606 IF (cz_pb_mgr.g_log_timing = publication_timing)
14607 THEN
14608 log_timing_message('start resolve_ids component ids of ui nodes');
14609 END IF;
14610
14611 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');
14612
14613 IF (cz_pb_mgr.g_log_timing = publication_timing)
14614 THEN
14615 log_timing_message('end resolve_ids component ids of ui nodes');
14616 log_timing_message('start resolve_ids model ref expl id of cz_ui nodes');
14617 END IF;
14618
14619 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');
14620
14621 IF (cz_pb_mgr.g_log_timing = publication_timing)
14622 THEN
14623 log_timing_message('end resolve_ids model ref expl id of cz_ui nodes');
14624 log_timing_message('start resolve_ids func comp ids of ui nodes');
14625 END IF;
14626
14627 ---------resolve func comp ids of ui nodes
14628 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');
14629
14630 IF (cz_pb_mgr.g_log_timing = publication_timing)
14631 THEN
14632 log_timing_message('end resolve_ids func comp ids of ui nodes');
14633 log_timing_message('start resolve_ref_ids_not_found');
14634 END IF;
14635
14636 ---------resolve ui_def_ref_id
14637 -- should call resolve_ids instead
14638 resolve_ref_ids_not_found(cz_pb_mgr.v_cz_ui_nodes_new_ref
14639 ,cz_pb_mgr.v_cz_ui_defs_old_ref
14640 ,cz_pb_mgr.v_cz_ui_defs_idx_ref
14641 ,cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref
14642 ,'cz_ui_nodes.ui_def_ref_id'
14643 ,cz_pb_mgr.v_status_code
14644 );
14645
14646 IF (cz_pb_mgr.g_log_timing = publication_timing)
14647 THEN
14648 log_timing_message('end resolve_ref_ids_not_found');
14649 log_timing_message('start resolve_remote_ui_nodes');
14650 END IF;
14651
14652 ----------resolve remote ui_node_ids
14653 resolve_remote_ui_nodes(cz_pb_mgr.v_cz_ui_nodes_new_ref
14654 ,cz_pb_mgr.v_models_not_to_be_exported
14655 ,cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref
14656 ,cz_pb_mgr.v_server_id
14657 ,cz_pb_mgr.v_status_code
14658 );
14659
14660 IF (cz_pb_mgr.g_log_timing = publication_timing)
14661 THEN
14662 log_timing_message('end resolve_remote_ui_nodes');
14663 END IF;
14664
14665 --------populate plsql_table_list for ui_nodes
14666 plsql_table_list.DELETE;
14667 rec_count := 1;
14668 plsql_table_list(rec_count).col_name := 'ui_node_id';
14669 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_new_ref';
14670 rec_count := rec_count + 1;
14671 plsql_table_list(rec_count).col_name := 'ui_def_id';
14672 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_def_id_ref';
14673 rec_count := rec_count + 1;
14674 plsql_table_list(rec_count).col_name := 'parent_id';
14675 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_parent_id_ref';
14676 rec_count := rec_count + 1;
14677 plsql_table_list(rec_count).col_name := 'component_id';
14678 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_component_id_ref';
14679 rec_count := rec_count + 1;
14680 plsql_table_list(rec_count).col_name := 'ps_node_id';
14681 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ps_node_id_ref';
14682 rec_count := rec_count + 1;
14683 plsql_table_list(rec_count).col_name := 'ui_node_ref_id';
14684 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_ref_id_ref';
14685 rec_count := rec_count + 1;
14686 plsql_table_list(rec_count).col_name := 'ui_def_ref_id';
14687 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_ui_dref_id_ref';
14688 rec_count := rec_count + 1;
14689 plsql_table_list(rec_count).col_name := 'func_comp_id';
14690 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_fcomp_id_ref';
14691 rec_count := rec_count + 1;
14692 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
14693 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_expl_id_ref';
14694 rec_count := rec_count + 1;
14695 plsql_table_list(rec_count).col_name := 'caption_id';
14696 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_capt_id_ref';
14697 rec_count := rec_count + 1;
14698 plsql_table_list(rec_count).col_name := 'tool_tip_id';
14699 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_ui_nodes_tool_id_ref';
14700
14701 IF (cz_pb_mgr.g_log_timing = publication_timing)
14702 THEN
14703 log_timing_message('start insert_into_table cz_ui_nodes');
14704 END IF;
14705
14706 -----------insert into cz_ui_nodes of target server
14710 ,plsql_table_list
14707 insert_into_table('cz_ui_nodes'
14708 ,'ui_node_id'
14709 ,cz_pb_mgr.v_db_link
14711 ,'cz_pb_mgr.v_cz_ui_nodes_old_ref'
14712 ,cz_pb_mgr.v_cz_ui_nodes_old_ref
14713 );
14714
14715 IF (cz_pb_mgr.g_log_timing = publication_timing)
14716 THEN
14717 log_timing_message('end insert_into_table cz_ui_nodes');
14718 END IF;
14719
14720 --------populate plsql_table_list for ui_node_props
14721 IF (cz_pb_mgr.g_log_timing = publication_timing)
14722 THEN
14723 log_timing_message('start insert_into_table cz_ui_node_props');
14724 END IF;
14725
14726 insert_ui_node_props(cz_pb_mgr.v_cz_ui_defs_old_ref);
14727
14728 IF (cz_pb_mgr.g_log_timing = publication_timing)
14729 THEN
14730 log_timing_message('end insert_into_table cz_ui_node_props');
14731 END IF;
14732
14733 -------------release local pl/sql tables
14734 v_cz_ui_nodes_new_tbl.DELETE;
14735 v_cz_ui_nodes_old_tbl.DELETE;
14736 v_cz_ui_nodes_ui_def_id_tbl.DELETE;
14737 v_cz_ui_nodes_parent_id_tbl.DELETE;
14738 v_cz_ui_nodes_ui_ref_id_tbl.DELETE;
14739 v_cz_ui_nodes_ps_node_id_tbl.DELETE;
14740 v_cz_ui_nodes_component_id_tbl.DELETE;
14741 v_cz_ui_nodes_ui_dref_id_tbl.DELETE;
14742 v_cz_ui_nodes_expl_id_tbl.DELETE;
14743 v_cz_ui_nodes_fcomp_id_tbl.DELETE;
14744
14745 EXCEPTION
14746 WHEN OTHERS
14747 THEN
14748 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14749 x_status := PUBLICATION_ERROR;
14750 RAISE pb_upload_ui_schema;
14751 END upload_ui_schema; /* end of upload of UI schema */
14752
14753 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14754 --------procedure to upload item sub-schema
14755 PROCEDURE upload_item_schema(p_ps_nodes_array IN OUT NOCOPY cz_pb_mgr.t_ref, x_status IN OUT NOCOPY VARCHAR2)
14756 AS
14757 v_property_count PLS_INTEGER := 0;
14758 rec_count PLS_INTEGER := 0;
14759 v_remote_prop_tbl cz_pb_mgr.t_ref;
14760 l_data_type_tbl cz_pb_mgr.t_ref;
14761 l_def_num_value_tbl cz_pb_mgr.t_ref;
14762 l_old_psnode_id NUMBER;
14763 BEGIN
14764
14765 ------------------insert data into cz_ps_prop_vals
14766 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
14767 get_all_properties;
14768
14769 IF (cz_pb_mgr.g_log_timing = publication_timing)
14770 THEN
14771 log_timing_message('end bulk collect from cz_psnode_propval_v');
14772 END IF;
14773
14774 IF (cz_pb_mgr.g_log_timing = publication_timing)
14775 THEN
14776 log_timing_message('start resolve psnodes of prop vals');
14777 END IF;
14778
14779 -----resolve psnodes of prop vals
14780 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');
14781
14782 IF (cz_pb_mgr.g_log_timing = publication_timing)
14783 THEN
14784 log_timing_message('end resolve psnodes of prop vals');
14785 END IF;
14786
14787 ----resolve prop num value for translatable text props
14788 IF (cz_pb_mgr.g_log_timing = publication_timing)
14789 THEN
14790 log_timing_message('start resolve prop num value');
14791 END IF;
14792
14793 IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0 AND
14794 (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0)) THEN
14795 FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
14796 LOOP
14797 IF cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
14798 (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
14799 cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
14800 rec_count := rec_count + 1;
14801 cz_pb_mgr.v_prop_vals_intl_text_ref(rec_count) := cz_pb_mgr.v_prop_vals_data_num_ref(intltext);
14802 END IF;
14803 END LOOP;
14804 END IF;
14805
14806 IF (cz_pb_mgr.g_log_timing = publication_timing)
14807 THEN
14808 log_timing_message('end resolve prop num value');
14809 END IF;
14810
14811 /*insert tranlateable property related intls for publication or local migration. Remote Migration will be dealt separately*/
14812 -- v_prop_vals_intl_text_ref not used by remote migration
14813 IF cz_pb_mgr.v_prop_vals_intl_text_ref.COUNT > 0 THEN
14814
14815 IF (cz_pb_mgr.g_log_timing = publication_timing)
14816 THEN
14817 log_timing_message('start insert texts for prop num value');
14818 END IF;
14819
14820 insert_intl_texts(cz_pb_mgr.v_prop_vals_intl_text_ref, 'prop num value of cz prop vals');
14821
14822 IF (cz_pb_mgr.g_log_timing = publication_timing)
14823 THEN
14824 log_timing_message('end insert texts for prop num value');
14825 END IF;
14826
14827 IF (cz_pb_mgr.g_log_timing = publication_timing)
14828 THEN
14829 log_timing_message('start resolve cz_pb_mgr.v_prop_vals_data_num_ref');
14830 END IF;
14831
14832 IF (cz_pb_mgr.v_prop_vals_data_num_ref.COUNT > 0)
14833 THEN
14837 cz_pb_mgr.v_prop_vals_data_num_ref(intltext) IS NOT NULL AND
14834 FOR intltext IN cz_pb_mgr.v_prop_vals_data_num_ref.FIRST .. cz_pb_mgr.v_prop_vals_data_num_ref.LAST
14835 LOOP
14836 IF cz_pb_mgr.v_prop_vals_data_typ_ref(intltext) = 8 AND
14838 (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR
14839 cz_pb_mgr.v_prop_vals_valuesource_ref(intltext) = 'PsValue') THEN
14840 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));
14841 END IF;
14842 END LOOP;
14843 END IF;
14844 END IF;
14845
14846 IF (cz_pb_mgr.g_log_timing = publication_timing)
14847 THEN
14848 log_timing_message('end resolve cz_pb_mgr.v_prop_vals_data_num_ref');
14849 END IF;
14850
14851 IF (cz_pb_mgr.g_log_timing = publication_timing)
14852 THEN
14853 log_timing_message('start insert_into_ps_prop_vals');
14854 END IF;
14855
14856 -- If this is remote model migration, we need to synchronize the properties before
14857 -- we insert into the target machine
14858 -- that will be done as part of insert item schema
14859 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model OR cz_pb_mgr.v_server_id = 0) THEN
14860 ------insert into cz_ps_prop_vals
14861 IF cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model THEN
14862 insert_into_ps_prop_vals;
14863 ELSE
14864 mc_insert_pspropvals;
14865 END IF;
14866
14867 IF (cz_pb_mgr.g_log_timing = publication_timing)
14868 THEN
14869 log_timing_message('end insert_into_ps_prop_vals');
14870 END IF;
14871
14872 ---------release pl/sql tables
14873 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
14874 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
14875 END IF;
14876
14877 ------------ populate item sub schema
14878 IF (cz_pb_mgr.v_server_id <> 0)
14879 THEN
14880 insert_item_schema;
14881
14882 -- if model migration, the tables were not cleared before,
14883 -- they are being taken care of at this stage
14884 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
14885 THEN
14886 ---------release pl/sql tables
14887 clear_tables('cz_ps_prop_vals', 'ref', cz_pb_mgr.v_status_code);
14888 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
14889 END IF;
14890
14891 ----------refresh model usages
14892 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
14893 THEN
14894 load_usages;
14895 END IF;
14896
14897 ---------delete pl/sql tables
14898 clear_tables('cz_item_masters', 'tbl', cz_pb_mgr.v_status_code);
14899 clear_tables('cz_item_masters', 'ref', cz_pb_mgr.v_status_code);
14900 END IF; /* end if of cz_pb_mgr.v_server_id <> 0 */
14901 EXCEPTION
14902 WHEN OTHERS
14903 THEN
14904 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
14905 x_status := PUBLICATION_ERROR;
14906 RAISE pb_upload_item_schema;
14907 END upload_item_schema; /* end of upload of ITEM schema */
14908
14909 --------------------------------------------------------------------------------
14910 PROCEDURE copy_fce_files IS
14911 l_oldid_tbl t_ref;
14912 l_newid_tbl t_ref;
14913 l_comid_tbl t_ref;
14914 l_count PLS_INTEGER := 0;
14915 l_plsql_table_list cz_pb_mgr.col_plsql_table_list;
14916 BEGIN
14917 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST LOOP
14918 l_newid_tbl.DELETE;
14919 l_oldid_tbl.DELETE;
14920 l_comid_tbl.DELETE;
14921
14922 SELECT cz_pb_mgr.sequence_generate(CZ_FCE_FILES_SEQ
14923 ,'CZ_FCE_FILES_S.NEXTVAL' || cz_pb_mgr.v_db_link
14924 ,cz_pb_mgr.v_oraclesequenceincr
14925 ),
14926 fce_file_id, component_id
14927 BULK COLLECT INTO l_newid_tbl, l_oldid_tbl, l_comid_tbl
14928 FROM cz_fce_files
14929 WHERE deleted_flag = '0' AND component_id = cz_pb_mgr.v_models_to_be_exported(i);
14930
14931 IF l_newid_tbl.COUNT > 0 THEN
14932 FOR j IN l_newid_tbl.FIRST .. l_newid_tbl.LAST LOOP
14933 l_count := l_count + 1;
14934 cz_pb_mgr.g_fcefile_new_id_tbl(l_count) := l_newid_tbl(j);
14935 cz_pb_mgr.g_fcefile_old_id_tbl(l_count) := l_oldid_tbl(j);
14936 cz_pb_mgr.g_fcefile_compid_tbl(l_count) := l_comid_tbl(j);
14937 END LOOP;
14938 END IF;
14939 END LOOP;
14940
14941 resolve_ids(cz_pb_mgr.g_fcefile_compid_tbl,cz_pb_mgr.v_cz_ps_nodes_idx_tbl,'component id of fce files');
14942
14943 l_plsql_table_list(1).col_name := 'FCE_FILE_ID';
14944 l_plsql_table_list(1).table_name := 'cz_pb_mgr.g_fcefile_new_id_tbl';
14945 l_plsql_table_list(2).col_name := 'COMPONENT_ID';
14946 l_plsql_table_list(2).table_name := 'cz_pb_mgr.g_fcefile_compid_tbl';
14947
14948 insert_into_table('CZ_FCE_FILES'
14949 ,'FCE_FILE_ID'
14950 , cz_pb_mgr.v_db_link
14951 , l_plsql_table_list
14952 ,'cz_pb_mgr.g_fcefile_old_id_tbl'
14953 , cz_pb_mgr.g_fcefile_old_id_tbl
14954 );
14958 -----procedure to insert rules
14955 END copy_fce_files;
14956
14957 ----->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
14959 PROCEDURE insert_rules(p_copy_rules_flag IN VARCHAR2, p_model_root_folder_map IN cz_pb_mgr.t_ref_idx_vc2)
14960 IS
14961 plsql_table_list cz_pb_mgr.col_plsql_table_list;
14962 rec_count NUMBER := 0;
14963 BEGIN
14964 ---------------reason id of cz rules
14965 insert_intl_texts(cz_pb_mgr.v_cz_rules_rea_id_ref, 'Reason ids of cz rules');
14966 --------resolve reason ids
14967 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');
14968
14969 ---------------unsatisfied message of cz rules
14970 insert_intl_texts(cz_pb_mgr.v_cz_rules_unmsg_id_ref, 'Unsatisfied message ids of cz rules');
14971 ---------resolve unsatisfied message ids
14972 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');
14973
14974 ------------populate effectivity set ids for cz rules
14975 insert_eff_sets(cz_pb_mgr.v_cz_rules_eff_id_ref
14976 ,cz_pb_mgr.v_cz_eff_sets_old_tbl
14977 ,cz_pb_mgr.v_cz_eff_sets_new_tbl
14978 ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
14979 ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
14980 ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
14981 ,'Eff sets of cz rules'
14982 );
14983
14984 export_signatures(cz_pb_mgr.v_cz_rules_sig_ref);
14985 -------------Resolve sig id of cz_rules
14986 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);
14987 ----------resolve_eff_sets;
14988 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');
14989
14990 -------------Resolve rule_folder_id of cz_rules
14991 -- if copy rule db setting is not yes, publishing still copies CXs and FCs but only copies
14992 -- the root rule folder of a model, so we will put such rules under root folder in tgt model
14993 -- note we do not want to leave rule folders unresolved because it may cause problem in developer
14994 IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
14995 FOR i IN cz_pb_mgr.v_cz_rules_rf_id_ref.FIRST .. cz_pb_mgr.v_cz_rules_rf_id_ref.LAST LOOP
14996 IF cz_pb_mgr.v_cz_rules_rf_id_ref(i)<>0 THEN
14997 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));
14998 END IF;
14999 END LOOP;
15000 END IF;
15001 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');
15002
15003 -------------Resolve devl_project_id of cz_rules
15004 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');
15005 -------------Resolve component_id of cz_rules
15006 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);
15007
15008 -------------Resolve expl id of cz_rules
15009 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');
15010 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');
15011 -------------populate plsql_table_list for cz rules
15012 plsql_table_list.DELETE;
15013 rec_count := 1;
15014 plsql_table_list(rec_count).col_name := 'rule_id';
15015 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
15016 rec_count := rec_count + 1;
15017 plsql_table_list(rec_count).col_name := 'rule_folder_id';
15018 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
15019 rec_count := rec_count + 1;
15020 plsql_table_list(rec_count).col_name := 'devl_project_id';
15021 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
15022 rec_count := rec_count + 1;
15023 plsql_table_list(rec_count).col_name := 'component_id';
15024 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_comp_id_ref';
15025 rec_count := rec_count + 1;
15026 plsql_table_list(rec_count).col_name := 'reason_id';
15027 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rea_id_ref';
15028 rec_count := rec_count + 1;
15029 plsql_table_list(rec_count).col_name := 'unsatisfied_msg_id';
15030 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_unmsg_id_ref';
15031 rec_count := rec_count + 1;
15032 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
15033 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
15034 rec_count := rec_count + 1;
15035 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15036 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_expl_ref';
15037 rec_count := rec_count + 1;
15038 plsql_table_list(rec_count).col_name := 'signature_id';
15039 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_sig_ref';
15040 rec_count := rec_count + 1;
15041 plsql_table_list(rec_count).col_name := 'ui_def_id';
15042 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_ui_ref';
15043 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
15044 rec_count := rec_count + 1;
15045 plsql_table_list(rec_count).col_name := 'effective_usage_mask';
15046 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_new_rul_usg_msk_tbl';
15047 rec_count := rec_count + 1;
15051
15048 plsql_table_list(rec_count).col_name := 'persistent_rule_id';
15049 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_persistent_id_ref';
15050 END IF;
15052 ------populate cz_rules
15053 insert_into_table('cz_rules'
15054 ,'rule_id'
15055 ,cz_pb_mgr.v_db_link
15056 ,plsql_table_list
15057 ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
15058 ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
15059 );
15060
15061 -----insert new records into cz_rule_folders
15062 plsql_table_list.DELETE;
15063 rec_count := 1;
15064 plsql_table_list(rec_count).col_name := 'rule_folder_id';
15065 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rule_id_new_ref';
15066 rec_count := rec_count + 1;
15067 plsql_table_list(rec_count).col_name := 'object_type';
15068 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_obj_ref';
15069 rec_count := rec_count + 1;
15070 plsql_table_list(rec_count).col_name := 'devl_project_id';
15071 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_proj_id_ref';
15072 rec_count := rec_count + 1;
15073 plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
15074 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_rf_id_ref';
15075 rec_count := rec_count + 1;
15076 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
15077 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_rules_eff_id_ref';
15078 ----------insert into cz_func_comp_specs
15079 insert_into_table('cz_rule_folders'
15080 ,'rule_folder_id'
15081 ,'object_type'
15082 ,cz_pb_mgr.v_db_link
15083 ,plsql_table_list
15084 ,'cz_pb_mgr.v_cz_rules_rule_id_old_ref'
15085 ,'cz_pb_mgr.v_cz_rules_obj_ref'
15086 ,cz_pb_mgr.v_cz_rules_rule_id_old_ref
15087 ,cz_pb_mgr.v_cz_rules_obj_ref
15088 );
15089 END insert_rules;
15090
15091 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15092 PROCEDURE bulk_collect_archives
15093 IS
15094 l_archive_refs_tbl cz_pb_mgr.t_ref;
15095 l_archive_id_tbl cz_pb_mgr.t_ref;
15096 l_devl_proj_tbl cz_pb_mgr.t_ref;
15097 rec_count NUMBER := 0;
15098 l_archive_count NUMBER := 0;
15099 BEGIN
15100 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
15101 THEN
15102 cz_pb_mgr.g_archive_id_old_ref.DELETE;
15103 cz_pb_mgr.g_devl_proj_ref.DELETE;
15104 cz_pb_mgr.g_devl_proj_old_ref.DELETE;
15105 cz_pb_mgr.g_archive_id_ref.DELETE;
15106 cz_pb_mgr.g_archives_idx_ref.DELETE;
15107
15108 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15109 LOOP
15110 l_archive_refs_tbl.DELETE;
15111 l_devl_proj_tbl.DELETE;
15112
15113 BEGIN
15114 SELECT archive_id, devl_project_id
15115 BULK COLLECT INTO l_archive_refs_tbl, l_devl_proj_tbl
15116 FROM cz_archive_refs
15117 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;
15118 EXCEPTION
15119 WHEN NO_DATA_FOUND
15120 THEN
15121 NULL;
15122 END;
15123
15124 IF (l_archive_refs_tbl.COUNT > 0)
15125 THEN
15126 rec_count := cz_pb_mgr.g_archive_id_old_ref.COUNT;
15127
15128 FOR j IN l_archive_refs_tbl.FIRST .. l_archive_refs_tbl.LAST
15129 LOOP
15130 rec_count := rec_count + 1;
15131 --cz_pb_mgr.g_archive_id_ref(rec_count) := l_archive_refs_tbl(j);
15132 cz_pb_mgr.g_archive_id_old_ref(rec_count) := l_archive_refs_tbl(j);
15133 cz_pb_mgr.g_devl_proj_ref(rec_count) := l_devl_proj_tbl(j);
15134 cz_pb_mgr.g_devl_proj_old_ref(rec_count) := l_devl_proj_tbl(j);
15135 END LOOP;
15136 END IF;
15137 END LOOP;
15138 END IF;
15139 EXCEPTION
15140 WHEN OTHERS
15141 THEN
15142 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_archive_refs', 'SQLERRM', SQLERRM);
15143 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ARCHIVES', SQLCODE);
15144 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15145 RAISE;
15146 END bulk_collect_archives;
15147
15148 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15149 PROCEDURE export_archives
15150 IS
15151 l_archives_tbl t_ref;
15152 l_old_archives_tbl t_ref;
15153 plsql_table_list cz_pb_mgr.col_plsql_table_list;
15154 rec_count NUMBER := 0;
15155 BEGIN
15156 bulk_collect_archives;
15157 cz_pb_mgr.g_archives_old_ref.DELETE;
15158 cz_pb_mgr.g_archives_new_ref.DELETE;
15159 cz_pb_mgr.g_archives_idx_ref.DELETE;
15160
15161 IF (cz_pb_mgr.g_archive_id_old_ref.COUNT > 0)
15162 THEN
15163 FOR i IN cz_pb_mgr.g_archive_id_old_ref.FIRST .. cz_pb_mgr.g_archive_id_old_ref.LAST
15164 LOOP
15165 l_old_archives_tbl.DELETE;
15166 l_archives_tbl.DELETE;
15167
15168 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_archives_seq
15169 , 'cz_archives_s.nextval' || cz_pb_mgr.v_db_link
15173 BULK COLLECT INTO l_archives_tbl
15170 ,cz_pb_mgr.v_oraclesequenceincr
15171 )
15172 ,archive_id
15174 ,l_old_archives_tbl
15175 FROM cz_archives
15176 WHERE cz_archives.archive_id = cz_pb_mgr.g_archive_id_old_ref(i) AND cz_archives.deleted_flag = record_not_deleted;
15177
15178 IF (l_archives_tbl.COUNT > 0)
15179 THEN
15180 FOR j IN l_archives_tbl.FIRST .. l_archives_tbl.LAST
15181 LOOP
15182 rec_count := cz_pb_mgr.g_archives_new_ref.COUNT + 1;
15183 cz_pb_mgr.g_archives_new_ref(rec_count) := l_archives_tbl(j);
15184 cz_pb_mgr.g_archives_idx_ref(cz_pb_mgr.g_archive_id_old_ref(i)) := l_archives_tbl(j);
15185 cz_pb_mgr.g_archives_old_ref(rec_count) := l_old_archives_tbl(j);
15186 END LOOP;
15187 END IF;
15188 END LOOP;
15189
15190 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
15191 THEN
15192 mm_sync_archives;
15193 -- resolve the array to only those that need to be inserted
15194 END IF;
15195
15196 IF (cz_pb_mgr.v_session_parameter <> model_copy AND cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
15197 THEN
15198 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');
15199
15200 ELSE
15201 rec_count:=0;
15202 FOR I IN cz_pb_mgr.g_archive_id_old_ref.FIRST..cz_pb_mgr.g_archive_id_old_ref.LAST
15203 LOOP
15204 rec_count:=rec_count+1;
15205 cz_pb_mgr.g_archive_id_ref(rec_count):=cz_pb_mgr.g_archive_id_old_ref(i);
15206 END LOOP;
15207 END IF;
15208
15209 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
15210 THEN
15211 mm_insert_archives;
15212 ELSE
15213 mm_insert_archives_for_pb;
15214 END IF;
15215
15216 IF (cz_pb_mgr.g_log_timing = publication_timing)
15217 THEN
15218 log_timing_message('end insert_into_table cz_archives');
15219 END IF;
15220 END IF;
15221 EXCEPTION
15222 WHEN OTHERS
15223 THEN
15224 RAISE;
15225 END export_archives;
15226
15227 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15228 PROCEDURE export_populators
15229 IS
15230 l_filter_sets_id_tbl cz_pb_mgr.t_ref;
15231 l_filter_sets_devl_tbl cz_pb_mgr.t_ref;
15232 l_filter_sets_rule_tbl cz_pb_mgr.t_ref;
15233 l_filter_sets_new_id_tbl cz_pb_mgr.t_ref;
15234 l_populators_new_id_tbl cz_pb_mgr.t_ref;
15235 l_populators_id_tbl cz_pb_mgr.t_ref;
15236 l_populators_node_tbl cz_pb_mgr.t_ref;
15237 l_populators_set_id_tbl cz_pb_mgr.t_ref;
15238 rec_flt_count NUMBER := 0;
15239 rec_pop_count NUMBER := 0;
15240 rec_count PLS_INTEGER := 0;
15241 plsql_table_list cz_pb_mgr.col_plsql_table_list;
15242 BEGIN
15243 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))
15244 THEN
15245 cz_pb_mgr.v_filter_sets_new_id_ref.DELETE;
15246 cz_pb_mgr.v_filter_sets_id_ref.DELETE;
15247 cz_pb_mgr.v_filter_sets_devl_ref.DELETE;
15248 cz_pb_mgr.v_filter_sets_rule_ref.DELETE;
15249 cz_pb_mgr.v_filter_sets_idx_ref.DELETE;
15250
15251 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15252 LOOP
15253 l_filter_sets_new_id_tbl.DELETE;
15254 l_filter_sets_id_tbl.DELETE;
15255 l_filter_sets_devl_tbl.DELETE;
15256 l_filter_sets_rule_tbl.DELETE;
15257
15258 BEGIN
15259 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_filter_sets_seq
15260 , 'cz_filter_sets_s.nextval' || cz_pb_mgr.v_db_link
15261 ,cz_pb_mgr.v_oraclesequenceincr
15262 )
15263 ,filter_set_id, devl_project_id, rule_id
15264 BULK COLLECT INTO l_filter_sets_new_id_tbl
15265 ,l_filter_sets_id_tbl, l_filter_sets_devl_tbl, l_filter_sets_rule_tbl
15266 FROM cz_filter_sets
15267 WHERE cz_filter_sets.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_filter_sets.deleted_flag = '0'
15268 AND EXISTS (SELECT NULL FROM cz_populators pop, cz_ps_nodes psn
15269 WHERE pop.deleted_flag = '0' AND pop.filter_set_id = cz_filter_sets.filter_set_id
15270 AND pop.owned_by_node_id = psn.ps_node_id AND psn.deleted_flag = '0');
15271
15272 EXCEPTION
15273 WHEN NO_DATA_FOUND
15274 THEN
15275 NULL;
15276 WHEN OTHERS
15277 THEN
15278 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_filter_sets', 'SQLERRM', SQLERRM);
15279 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.FILTERSETS', SQLCODE);
15280 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15281 RAISE;
15282 END;
15283
15284 IF (l_filter_sets_id_tbl.COUNT > 0)
15285 THEN
15289 LOOP
15286 rec_flt_count := cz_pb_mgr.v_filter_sets_id_ref.COUNT;
15287
15288 FOR j IN l_filter_sets_id_tbl.FIRST .. l_filter_sets_id_tbl.LAST
15290 rec_flt_count := rec_flt_count + 1;
15291 cz_pb_mgr.v_filter_sets_new_id_ref(rec_flt_count) := l_filter_sets_new_id_tbl(j);
15292 cz_pb_mgr.v_filter_sets_id_ref(rec_flt_count) := l_filter_sets_id_tbl(j);
15293 cz_pb_mgr.v_filter_sets_idx_ref(l_filter_sets_id_tbl(j)) := l_filter_sets_new_id_tbl(j);
15294 cz_pb_mgr.v_filter_sets_devl_ref(rec_flt_count) := l_filter_sets_devl_tbl(j);
15295 cz_pb_mgr.v_filter_sets_rule_ref(rec_flt_count) := l_filter_sets_rule_tbl(j);
15296 END LOOP;
15297 END IF;
15298 END LOOP;
15299
15300 IF (cz_pb_mgr.v_filter_sets_id_ref.COUNT > 0)
15301 THEN
15302 cz_pb_mgr.v_populators_new_id_ref.DELETE;
15303 cz_pb_mgr.v_populators_id_ref.DELETE;
15304 cz_pb_mgr.v_populators_node_ref.DELETE;
15305 cz_pb_mgr.v_populators_set_id_ref.DELETE;
15306
15307 FOR i IN cz_pb_mgr.v_filter_sets_id_ref.FIRST .. cz_pb_mgr.v_filter_sets_id_ref.LAST
15308 LOOP
15309 l_populators_id_tbl.DELETE;
15310 l_populators_node_tbl.DELETE;
15311 l_populators_set_id_tbl.DELETE;
15312 l_populators_new_id_tbl.DELETE;
15313
15314 BEGIN
15315 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_populators_seq
15316 , 'cz_populators_s.nextval' || cz_pb_mgr.v_db_link
15317 ,cz_pb_mgr.v_oraclesequenceincr
15318 )
15319 ,populator_id, owned_by_node_id, filter_set_id
15320 BULK COLLECT INTO l_populators_new_id_tbl
15321 ,l_populators_id_tbl, l_populators_node_tbl, l_populators_set_id_tbl
15322 FROM cz_populators
15323 WHERE cz_populators.filter_set_id = cz_pb_mgr.v_filter_sets_id_ref(i) AND cz_populators.deleted_flag = '0';
15324 EXCEPTION
15325 WHEN NO_DATA_FOUND
15326 THEN
15327 NULL;
15328 WHEN OTHERS
15329 THEN
15330 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
15331 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
15332 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15333 RAISE;
15334 END;
15335
15336 IF (l_populators_id_tbl.COUNT > 0)
15337 THEN
15338 rec_pop_count := cz_pb_mgr.v_populators_id_ref.COUNT;
15339
15340 FOR j IN l_populators_id_tbl.FIRST .. l_populators_id_tbl.LAST
15341 LOOP
15342 rec_pop_count := rec_pop_count + 1;
15343 cz_pb_mgr.v_populators_new_id_ref(rec_pop_count) := l_populators_new_id_tbl(j);
15344 cz_pb_mgr.v_populators_id_ref(rec_pop_count) := l_populators_id_tbl(j);
15345 cz_pb_mgr.v_populators_node_ref(rec_pop_count) := l_populators_node_tbl(j);
15346 cz_pb_mgr.v_populators_set_id_ref(rec_pop_count) := l_populators_set_id_tbl(j);
15347 END LOOP;
15348 END IF;
15349 END LOOP;
15350
15351 ------resolve devl id and rule id
15352 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');
15353 ------resolve devl id
15354 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');
15355 -----resolve ps node id
15356 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');
15357 -----resolve filter set id
15358 resolve_ids(cz_pb_mgr.v_populators_set_id_ref, cz_pb_mgr.v_filter_sets_idx_ref, 'filter set id of cz populators');
15359 plsql_table_list.DELETE;
15360 rec_count := 1;
15361 plsql_table_list(rec_count).col_name := 'filter_set_id';
15362 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_new_id_ref';
15363 rec_count := rec_count + 1;
15364 plsql_table_list(rec_count).col_name := 'devl_project_id';
15365 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_devl_ref';
15366 rec_count := rec_count + 1;
15367 plsql_table_list(rec_count).col_name := 'rule_id';
15368 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_filter_sets_rule_ref';
15369 insert_into_table('cz_filter_sets'
15370 ,'filter_set_id'
15371 ,cz_pb_mgr.v_db_link
15372 ,plsql_table_list
15373 ,'cz_pb_mgr.v_filter_sets_id_ref'
15374 ,cz_pb_mgr.v_filter_sets_id_ref
15375 );
15376 plsql_table_list.DELETE;
15377 rec_count := 1;
15378 plsql_table_list(rec_count).col_name := 'populator_id';
15379 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_new_id_ref';
15380 rec_count := rec_count + 1;
15384 plsql_table_list(rec_count).col_name := 'filter_set_id';
15381 plsql_table_list(rec_count).col_name := 'owned_by_node_id';
15382 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_node_ref';
15383 rec_count := rec_count + 1;
15385 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_populators_set_id_ref';
15386 insert_into_table('cz_populators'
15387 ,'populator_id'
15388 ,cz_pb_mgr.v_db_link
15389 ,plsql_table_list
15390 ,'cz_pb_mgr.v_populators_id_ref'
15391 ,cz_pb_mgr.v_populators_id_ref
15392 );
15393
15394 IF (cz_pb_mgr.v_populators_node_ref.COUNT > 0)
15395 THEN
15396 EXECUTE IMMEDIATE
15397 'BEGIN' || ' ' ||
15398 'FOR i IN cz_pb_mgr.v_populators_node_ref.FIRST..cz_pb_mgr.v_populators_node_ref.LAST' || ' ' ||
15399 'LOOP' || ' ' ||
15400 'UPDATE cz_ps_nodes' || cz_pb_mgr.v_db_link || ' ' || 't' || ' ' ||
15401 'SET t.from_populator_id = cz_pb_mgr.v_populators_new_id_ref(i) ' || ' ' ||
15402 'WHERE t.devl_project_id = cz_pb_mgr.v_filter_sets_devl_ref(i) AND' || ' ' ||
15403 't.from_populator_id=cz_pb_mgr.v_populators_id_ref(i) AND' || ' ' ||
15404 't.deleted_flag=''0''; ' || ' ' ||
15405 'END LOOP;' || ' ' ||
15406 'END;';
15407
15408 COMMIT;
15409 END IF;
15410 END IF;
15411 END IF;
15412 EXCEPTION
15413 WHEN OTHERS
15414 THEN
15415 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_INSERT_ERR', 'TABLENAME', 'cz_populators', 'SQLERRM', SQLERRM);
15416 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.POPULATORS', SQLCODE);
15417 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15418 RAISE;
15419 END export_populators;
15420
15421 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
15422 ------procedure that uploads rule schema
15423 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)
15424 AS
15425 rec_count PLS_INTEGER := 0;
15426 plsql_table_list cz_pb_mgr.col_plsql_table_list;
15427 v_cz_folders_pf_id_tbl cz_pb_mgr.t_ref;
15428 v_cz_folders_pj_id_tbl cz_pb_mgr.t_ref;
15429 v_cz_express_proj_id_tbl cz_pb_mgr.t_ref;
15430 v_cz_enodes_expr_id_tbl cz_pb_mgr.t_ref;
15431 v_cz_des_feature_id_old_tbl cz_pb_mgr.t_ref;
15432 v_cz_des_feature_rule_id_tbl cz_pb_mgr.t_ref;
15433 v_cz_des_feature_mrefl_id_tbl cz_pb_mgr.t_ref;
15434 v_cz_des_feature_ft_typ_tbl cz_pb_mgr.t_ref;
15435 v_cz_des_cells_rule_id_tbl cz_pb_mgr.t_ref;
15436 v_cz_des_cells_sf_id_tbl cz_pb_mgr.t_ref;
15437 v_cz_des_cells_sopt_id_tbl cz_pb_mgr.t_ref;
15438 v_cz_des_cells_popt_id_tbl cz_pb_mgr.t_ref;
15439 v_cz_des_cells_sexpl_id_tbl cz_pb_mgr.t_ref;
15440 v_cz_des_cells_mark_char_tbl cz_pb_mgr.exprflgtype;
15441 v_cz_rule_folders_orig_tbl cz_pb_mgr.orig_sys_ref_type;
15442 v_cz_rule_folders_eff_tbl cz_pb_mgr.t_ref;
15443 v_sig_count NUMBER := 0;
15444 v_object_type_tbl cz_pb_mgr.objtype;
15445 rec_count_rsq NUMBER := 0;
15446 v_rule_type_tbl cz_pb_mgr.t_ref;
15447 v_model_root_folder_map cz_pb_mgr.t_ref_idx_vc2;
15448
15449 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)
15450 IS
15451 BEGIN
15452 IF px_fk_tbl.COUNT=0 THEN RETURN; END IF;
15453
15454 FOR i IN px_fk_tbl.FIRST .. px_fk_tbl.LAST LOOP
15455 IF px_fk_tbl(i) IS NOT NULL THEN
15456 BEGIN
15457 px_fk_tbl(i) := p_id_map(px_fk_tbl(i));
15458 EXCEPTION
15459 WHEN NO_DATA_FOUND THEN
15460 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15461 FOR j IN (SELECT rule.name rulename, prj.name prjname
15462 FROM cz_rules rule, cz_devl_projects prj
15463 WHERE rule.rule_id=p_ruleid_tbl(i) AND rule.devl_project_id=prj.devl_project_id) LOOP
15464 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);
15465 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'upload_rule_schema.mm_resolve_rule_fks', SQLCODE);
15466 END LOOP;
15467 RAISE;
15468 END;
15469 END IF;
15470 END LOOP;
15471 END mm_resolve_rule_fks;
15472
15473 BEGIN
15474 --------------populate ps nodes pl/sql table with ps node ids from remote server
15475 get_rem_nodes_of_models(cz_pb_mgr.v_models_not_to_be_exported
15476 ,cz_pb_mgr.v_cz_ps_nodes_idx_tbl
15477 ,cz_pb_mgr.v_status_code
15478 );
15479 -------insert into cz_rule_folders
15480 clear_tables('cz_rule_folders', 'ref', cz_pb_mgr.v_status_code);
15481 mm_v_tbl_rule_seq.DELETE;
15482
15483 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
15484 THEN
15485 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15486 LOOP
15487 clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
15488 v_cz_folders_pf_id_tbl.DELETE;
15489 v_cz_folders_pj_id_tbl.DELETE;
15493
15490 v_cz_rule_folders_orig_tbl.DELETE;
15491 v_cz_rule_folders_eff_tbl.DELETE;
15492 v_object_type_tbl.DELETE;
15494 BEGIN
15495 IF (cz_pb_mgr.v_session_parameter = model_copy)
15496 THEN
15497 IF (p_copy_rules_flag = 'YES') THEN
15498 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
15499 , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
15500 ,cz_pb_mgr.v_oraclesequenceincr
15501 )
15502 ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
15503 ,orig_sys_ref, object_type
15504 BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
15505 ,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
15506 ,v_cz_rule_folders_eff_tbl, v_object_type_tbl
15507 FROM cz_rule_folders t
15508 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');
15509 ELSE -- Just create the Model Rule Folder if not copying rules
15510 SELECT cz_pb_mgr.sequence_generate(
15511 cz_pb_mgr.cz_rule_folders_seq,
15512 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
15513 cz_pb_mgr.v_oraclesequenceincr
15514 ),
15515 rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id,orig_sys_ref, object_type
15516 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,
15517 v_cz_folders_pj_id_tbl, v_cz_rule_folders_orig_tbl, v_cz_rule_folders_eff_tbl, v_object_type_tbl
15518 FROM cz_rule_folders t
15519 WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15520 AND t.deleted_flag = '0'
15521 AND t.parent_rule_folder_id IS NULL
15522 AND t.object_type = 'RFL';
15523 END IF;
15524 ELSE
15525 IF (p_copy_rules_flag = 'YES')
15526 THEN
15527 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_rule_folders_seq
15528 , 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link
15529 ,cz_pb_mgr.v_oraclesequenceincr
15530 )
15531 ,rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id
15532 ,orig_sys_ref, object_type
15533 BULK COLLECT INTO cz_pb_mgr.v_cz_folders_id_new_tbl
15534 ,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
15535 ,v_cz_rule_folders_orig_tbl, v_object_type_tbl
15536 FROM cz_rule_folders t
15537 WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15538 AND t.deleted_flag = '0'
15539 AND t.object_type IN('RFL', 'RSQ');
15540 ELSE -- Just create the Model Rule Folder if not copying rules
15541 SELECT cz_pb_mgr.sequence_generate(
15542 cz_pb_mgr.cz_rule_folders_seq,
15543 'cz_rule_folders_s.nextval' || cz_pb_mgr.v_db_link,
15544 cz_pb_mgr.v_oraclesequenceincr
15545 ), rule_folder_id, parent_rule_folder_id, devl_project_id, effectivity_set_id, orig_sys_ref, object_type
15546 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,
15547 v_cz_folders_pj_id_tbl, v_cz_rule_folders_eff_tbl, v_cz_rule_folders_orig_tbl, v_object_type_tbl
15548 FROM cz_rule_folders t
15549 WHERE t.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15550 AND t.deleted_flag = '0'
15551 AND t.parent_rule_folder_id IS NULL
15552 AND t.object_type = 'RFL';
15553 END IF;
15554 END IF;
15555 EXCEPTION
15556 WHEN NO_DATA_FOUND
15557 THEN
15558 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
15559 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
15560 WHEN OTHERS
15561 THEN
15562 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_rule_folders', 'SQLERRM', SQLERRM);
15563 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RULEFOLDERS', SQLCODE);
15564 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15565 RAISE;
15566 END;
15567
15568 rec_count := cz_pb_mgr.v_cz_folders_id_new_ref.COUNT;
15569 rec_count_rsq := mm_v_tbl_rule_seq.COUNT;
15570
15571 IF (cz_pb_mgr.v_cz_folders_id_new_tbl.COUNT > 0)
15572 THEN
15573 FOR k IN cz_pb_mgr.v_cz_folders_id_new_tbl.FIRST .. cz_pb_mgr.v_cz_folders_id_new_tbl.LAST
15574 LOOP
15575 rec_count := rec_count + 1;
15576 cz_pb_mgr.v_cz_folders_id_new_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_new_tbl(k);
15580 cz_pb_mgr.v_cz_folders_pj_id_ref(rec_count) := v_cz_folders_pj_id_tbl(k);
15577 cz_pb_mgr.v_cz_folders_id_old_ref(rec_count) := cz_pb_mgr.v_cz_folders_id_old_tbl(k);
15578 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);
15579 cz_pb_mgr.v_cz_folders_pf_id_ref(rec_count) := v_cz_folders_pf_id_tbl(k);
15581 cz_pb_mgr.v_cz_folders_eff_ref(rec_count) := v_cz_rule_folders_eff_tbl(k);
15582 cz_pb_mgr.v_cz_folders_orig_ref(rec_count) := v_cz_rule_folders_orig_tbl(k);
15583 cz_pb_mgr.v_cz_folders_obj_ref(rec_count) := v_object_type_tbl(k);
15584
15585 IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
15586 v_model_root_folder_map(cz_pb_mgr.v_models_to_be_exported(i)):=v_cz_folders_id_old_tbl(k);
15587 END IF;
15588
15589 IF (v_object_type_tbl(k) = 'RSQ')
15590 THEN
15591 rec_count_rsq := rec_count_rsq + 1;
15592 mm_v_tbl_rule_seq(rec_count_rsq) := v_cz_folders_id_old_tbl(k);
15593 END IF;
15594 END LOOP;
15595 END IF;
15596 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
15597 END IF; /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
15598
15599 -----resolve parent rule folder id and devl proj id
15600 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');
15601 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');
15602 insert_eff_sets(cz_pb_mgr.v_cz_folders_eff_ref
15603 ,cz_pb_mgr.v_cz_eff_sets_old_tbl
15604 ,cz_pb_mgr.v_cz_eff_sets_new_tbl
15605 ,cz_pb_mgr.v_cz_eff_sets_idx_tbl
15606 ,'cz_pb_mgr.v_cz_eff_sets_old_tbl'
15607 ,'cz_pb_mgr.v_cz_eff_sets_new_tbl'
15608 ,'Eff sets of rule folders'
15609 );
15610 resolve_ids(cz_pb_mgr.v_cz_folders_eff_ref, cz_pb_mgr.v_cz_eff_sets_idx_tbl, 'eff id of rule folders');
15611 -----insert new records into cz_rule_folders
15612 plsql_table_list.DELETE;
15613 rec_count := 1;
15614 plsql_table_list(rec_count).col_name := 'rule_folder_id';
15615 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_id_new_ref';
15616 rec_count := rec_count + 1;
15617 plsql_table_list(rec_count).col_name := 'object_type';
15618 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_obj_ref';
15619 rec_count := rec_count + 1;
15620 plsql_table_list(rec_count).col_name := 'devl_project_id';
15621 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pj_id_ref';
15622 rec_count := rec_count + 1;
15623 plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
15624 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_pf_id_ref';
15625 rec_count := rec_count + 1;
15626 plsql_table_list(rec_count).col_name := 'effectivity_set_id';
15627 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_eff_ref';
15628 rec_count := rec_count + 1;
15629 plsql_table_list(rec_count).col_name := 'orig_sys_ref';
15630 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_folders_orig_ref';
15631 insert_into_table('cz_rule_folders'
15632 ,'rule_folder_id'
15633 ,'object_type'
15634 ,cz_pb_mgr.v_db_link
15635 ,plsql_table_list
15636 ,'cz_pb_mgr.v_cz_folders_id_old_ref'
15637 ,'cz_pb_mgr.v_cz_folders_obj_ref'
15638 ,cz_pb_mgr.v_cz_folders_id_old_ref
15639 ,cz_pb_mgr.v_cz_folders_obj_ref
15640 );
15641
15642 --------release local pl/sql tables of rule folders
15643 v_cz_folders_pf_id_tbl.DELETE;
15644 v_cz_folders_pj_id_tbl.DELETE;
15645 v_cz_rule_folders_eff_tbl.DELETE;
15646 v_cz_rule_folders_orig_tbl.DELETE;
15647 clear_tables('cz_rule_folders', 'tbl', cz_pb_mgr.v_status_code);
15648
15649 -------------insert into func comp specs
15650 IF cz_pb_mgr.v_cz_func_comp_old_ref.COUNT > 0 THEN
15651 IF cz_pb_mgr.v_session_parameter=pub_model AND p_copy_rules_flag<>'YES' THEN
15652 FOR i IN cz_pb_mgr.v_cz_func_fld_old_ref.FIRST .. cz_pb_mgr.v_cz_func_fld_old_ref.LAST LOOP
15653 IF cz_pb_mgr.v_cz_func_fld_old_ref(i) IS NOT NULL THEN
15654 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));
15655 END IF;
15656 END LOOP;
15657 END IF;
15658 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');
15659
15660 IF (cz_pb_mgr.g_log_timing = publication_timing)
15661 THEN
15662 log_timing_message('start resolve_ids devl project id of cz_func_comp_specs');
15663 END IF;
15664
15665 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');
15666
15667 IF (cz_pb_mgr.g_log_timing = publication_timing)
15668 THEN
15669 log_timing_message('end resolve_ids devl project id of cz_func_comp_specs');
15670 log_timing_message('start resolve_ids component id of cz_func_comp_specs');
15671 END IF;
15672
15676 THEN
15673 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);
15674
15675 IF (cz_pb_mgr.g_log_timing = publication_timing)
15677 log_timing_message('end resolve_ids component id of cz_func_comp_specs');
15678 log_timing_message('start resolve_ids model ref expl id of cz_funce_comp_specs');
15679 END IF;
15680
15681 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');
15682
15683 IF (cz_pb_mgr.g_log_timing = publication_timing)
15684 THEN
15685 log_timing_message('end resolve_ids model ref expl id of cz_funce_comp_specs');
15686 END IF;
15687
15688 --------populate plsql_table_list for cz func comp specs
15689 plsql_table_list.DELETE;
15690 rec_count := 1;
15691 plsql_table_list(rec_count).col_name := 'func_comp_id';
15692 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
15693 rec_count := rec_count + 1;
15694 plsql_table_list(rec_count).col_name := 'devl_project_id';
15695 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
15696 rec_count := rec_count + 1;
15697 plsql_table_list(rec_count).col_name := 'component_id';
15698 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_cid_old_ref';
15699 rec_count := rec_count + 1;
15700 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15701 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_expl_old_ref';
15702 rec_count := rec_count + 1;
15703 plsql_table_list(rec_count).col_name := 'rule_folder_id';
15704 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
15705
15706 ----------insert into cz_func_comp_specs
15707 IF (cz_pb_mgr.g_log_timing = publication_timing)
15708 THEN
15709 log_timing_message('start insert_into_table cz_func_comp_specs');
15710 END IF;
15711
15712 insert_into_table('cz_func_comp_specs'
15713 ,'func_comp_id'
15714 ,cz_pb_mgr.v_db_link
15715 ,plsql_table_list
15716 ,'cz_pb_mgr.v_cz_func_comp_old_ref'
15717 ,cz_pb_mgr.v_cz_func_comp_old_ref
15718 );
15719
15720 IF (cz_pb_mgr.g_log_timing = publication_timing)
15721 THEN
15722 log_timing_message('end insert_into_table cz_func_comp_specs');
15723 END IF;
15724
15725 -----insert new records into cz_rule_folders
15726 plsql_table_list.DELETE;
15727 rec_count := 1;
15728 plsql_table_list(rec_count).col_name := 'rule_folder_id';
15729 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_comp_new_ref';
15730 rec_count := rec_count + 1;
15731 plsql_table_list(rec_count).col_name := 'object_type';
15732 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_obj_ref';
15733 rec_count := rec_count + 1;
15734 plsql_table_list(rec_count).col_name := 'devl_project_id';
15735 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_devl_old_ref';
15736 rec_count := rec_count + 1;
15737 plsql_table_list(rec_count).col_name := 'parent_rule_folder_id';
15738 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_func_fld_old_ref';
15739 ----------insert into cz_func_comp_specs
15740 insert_into_table('cz_rule_folders'
15741 ,'rule_folder_id'
15742 ,'object_type'
15743 ,cz_pb_mgr.v_db_link
15744 ,plsql_table_list
15745 ,'cz_pb_mgr.v_cz_func_comp_old_ref'
15746 ,'cz_pb_mgr.v_cz_func_obj_ref'
15747 ,cz_pb_mgr.v_cz_func_comp_old_ref
15748 ,cz_pb_mgr.v_cz_func_obj_ref
15749 );
15750 END IF;
15751
15752 -----export archives
15753 export_archives;
15754 export_populators;
15755
15756 IF cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0 THEN
15757 insert_rules(p_copy_rules_flag, v_model_root_folder_map);
15758 END IF;
15759
15760 IF cz_pb_mgr.v_session_parameter = pub_model THEN
15761 IF g_engine_type = ENGINE_TYPE_FCE THEN
15762 copy_fce_files;
15763 ELSE
15764 copy_lce_headers;
15765 copy_lce_texts(p_copy_rules_flag);
15766 END IF;
15767 END IF;
15768
15769 ---------------local pl/sql tables of cz rules released after populating rule sub schema
15770 -------------insert expressions
15771 IF (cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0)
15772 THEN
15773 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
15774 LOOP
15775 clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
15776
15777 BEGIN
15778 IF (cz_pb_mgr.v_session_parameter IN(model_copy, cz_model_migration_pvt.migrate_model))
15779 THEN
15780 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
15781 , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
15782 ,cz_pb_mgr.v_oraclesequenceincr
15783 )
15787 BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
15784 ,expr_node_id, ps_node_id, expr_parent_id
15785 ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
15786 ,param_signature_id,property_id
15788 ,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
15789 ,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
15790 ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
15791 ,cz_pb_mgr.v_cz_enodes_prop_id_tbl
15792 FROM cz_expression_nodes t
15793 WHERE t.rule_id = cz_pb_mgr.v_cz_rules_rule_id_old_ref(m) AND t.deleted_flag = '0';
15794 ELSE
15795 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_expression_nodes_seq
15796 , 'cz_expression_nodes_s.nextval' || cz_pb_mgr.v_db_link
15797 ,cz_pb_mgr.v_oraclesequenceincr
15798 )
15799 ,expr_node_id, ps_node_id, expr_parent_id
15800 ,decode(model_ref_expl_id,-1,null,model_ref_expl_id), rule_id, argument_signature_id
15801 ,param_signature_id
15802 BULK COLLECT INTO cz_pb_mgr.v_cz_enodes_enode_id_new_tbl
15803 ,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
15804 ,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
15805 ,cz_pb_mgr.v_cz_enodes_par_sig_id_tbl
15806 FROM cz_expression_nodes t
15807 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;
15808 END IF;
15809 EXCEPTION
15810 WHEN NO_DATA_FOUND
15811 THEN
15812 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
15813 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
15814 WHEN OTHERS
15815 THEN
15816 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_expression_nodes', 'SQLERRM', SQLERRM);
15817 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPRNODES', SQLCODE);
15818 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15819 RAISE;
15820 END;
15821
15822 rec_count := cz_pb_mgr.v_cz_enodes_enode_id_new_ref.COUNT;
15823
15824 IF (cz_pb_mgr.v_cz_enodes_enode_id_new_tbl.COUNT > 0)
15825 THEN
15826 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
15827 LOOP
15828 rec_count := rec_count + 1;
15829 cz_pb_mgr.v_cz_enodes_enode_id_new_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_new_tbl(i);
15830 cz_pb_mgr.v_cz_enodes_enode_id_old_ref(rec_count) := cz_pb_mgr.v_cz_enodes_enode_id_old_tbl(i);
15831 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);
15832 cz_pb_mgr.v_cz_enodes_psnode_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_psnode_id_tbl(i);
15833 cz_pb_mgr.v_cz_enodes_pexpr_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_pexpr_id_tbl(i);
15834 cz_pb_mgr.v_cz_enodes_mrefl_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_mrefl_id_tbl(i);
15835 cz_pb_mgr.v_cz_enodes_rule_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_rule_id_tbl(i);
15836 cz_pb_mgr.v_cz_enodes_arg_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
15837 cz_pb_mgr.v_cz_enodes_par_sig_id_ref(rec_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
15838
15839 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
15840 THEN
15841 cz_pb_mgr.v_cz_enodes_prop_id_ref(rec_count):=cz_pb_mgr.v_cz_enodes_prop_id_tbl(i);
15842 END IF;
15843
15844 IF (cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i) IS NOT NULL)
15845 THEN
15846 IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i)))
15847 THEN
15848 v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
15849 cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_arg_sig_id_tbl(i);
15850 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);
15851 END IF;
15852 END IF;
15853
15854 IF (cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i) IS NOT NULL)
15855 THEN
15856 IF (NOT cz_pb_mgr.v_cz_expr_sig_ref.EXISTS(cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i)))
15857 THEN
15858 v_sig_count := cz_pb_mgr.v_cz_expr_sig_ref.COUNT + 1;
15859 cz_pb_mgr.v_cz_expr_sig_ref(v_sig_count) := cz_pb_mgr.v_cz_enodes_par_sig_id_tbl(i);
15863 END LOOP;
15860 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);
15861 END IF;
15862 END IF;
15864 END IF;
15865 END LOOP; /* end loop of */
15866 END IF; -- end cz_pb_mgr.v_cz_rules_rule_id_old_ref.COUNT > 0 /* (COUNT > 0) */
15867
15868 --------export_signatures
15869 export_signatures(cz_pb_mgr.v_cz_expr_sig_ref);
15870 -----------resolve parent expr node id
15871 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);
15872 -------resolve sig ids
15873 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);
15874 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);
15875
15876 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
15877 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');
15878 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');
15879 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);
15880 ELSE
15881 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);
15882 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);
15883 END IF;
15884
15885 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');
15886
15887 --------populate plsql_table_list for cz_expression_nodes
15888 plsql_table_list.DELETE;
15889 rec_count := 1;
15890 plsql_table_list(rec_count).col_name := 'expr_node_id';
15891 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_enode_id_new_ref';
15892 rec_count := rec_count + 1;
15893 plsql_table_list(rec_count).col_name := 'rule_id';
15894 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_rule_id_ref';
15895 rec_count := rec_count + 1;
15896 plsql_table_list(rec_count).col_name := 'ps_node_id';
15897 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_psnode_id_ref';
15898 rec_count := rec_count + 1;
15899 plsql_table_list(rec_count).col_name := 'expr_parent_id';
15900 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_pexpr_id_ref';
15901 rec_count := rec_count + 1;
15902 plsql_table_list(rec_count).col_name := 'model_ref_expl_id';
15903 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_mrefl_id_ref';
15904 rec_count := rec_count + 1;
15905 plsql_table_list(rec_count).col_name := 'argument_signature_id';
15906 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_arg_sig_id_ref';
15907 rec_count := rec_count + 1;
15908 plsql_table_list(rec_count).col_name := 'param_signature_id';
15909 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_par_sig_id_ref';
15910
15911 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model)
15912 THEN
15913 rec_count := rec_count + 1;
15914 plsql_table_list(rec_count).col_name := 'property_id';
15915 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.v_cz_enodes_prop_id_ref';
15916 END IF;
15917
15918 ------insert new records into cz_expression_nodes
15919 insert_into_table('cz_expression_nodes'
15920 ,'expr_node_id'
15921 ,cz_pb_mgr.v_db_link
15922 ,plsql_table_list
15923 ,'cz_pb_mgr.v_cz_enodes_enode_id_old_ref'
15924 ,cz_pb_mgr.v_cz_enodes_enode_id_old_ref
15925 );
15926 --------release tbl pl/sql tables of cz expression nodes
15927 clear_tables('cz_expression_nodes', 'tbl', cz_pb_mgr.v_status_code);
15928
15929 IF (p_copy_rules_flag = 'YES') THEN
15930
15931 -------------insert into cz_des_chart_features
15932 clear_tables('cz_des_chart_features', 'ref', cz_pb_mgr.v_status_code);
15933
15934 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
15935 THEN
15936 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
15937 LOOP
15938 v_cz_des_feature_id_old_tbl.DELETE;
15939 v_cz_des_feature_rule_id_tbl.DELETE;
15940 v_cz_des_feature_mrefl_id_tbl.DELETE;
15941 v_cz_des_feature_ft_typ_tbl.DELETE;
15942
15943 BEGIN
15944 SELECT feature_id, rule_id, model_ref_expl_id, feature_type
15945 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
15946 FROM cz_des_chart_features t
15947 WHERE t.rule_id IN(
15951 AND cz_rules.deleted_flag = '0')
15948 SELECT rule_id
15949 FROM cz_rules
15950 WHERE cz_rules.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
15952 AND t.deleted_flag = '0';
15953 EXCEPTION
15954 WHEN NO_DATA_FOUND
15955 THEN
15956 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
15957 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
15958 WHEN OTHERS
15959 THEN
15960 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_features', 'SQLERRM', SQLERRM);
15961 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCHARTFEAT', SQLCODE);
15962 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
15963 RAISE;
15964 END;
15965
15966 rec_count := cz_pb_mgr.v_cz_des_feature_id_old_ref.COUNT;
15967
15968 IF (v_cz_des_feature_id_old_tbl.COUNT > 0)
15969 THEN
15970 FOR k IN v_cz_des_feature_id_old_tbl.FIRST .. v_cz_des_feature_id_old_tbl.LAST
15971 LOOP
15972 rec_count := rec_count + 1;
15973 cz_pb_mgr.v_cz_des_feature_id_old_ref(rec_count) := v_cz_des_feature_id_old_tbl(k);
15974 cz_pb_mgr.v_cz_des_feature_rule_id_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
15975 cz_pb_mgr.v_cz_des_feature_rid_new_ref(rec_count) := v_cz_des_feature_rule_id_tbl(k);
15976 cz_pb_mgr.v_cz_des_feature_mrefl_id_ref(rec_count) := v_cz_des_feature_mrefl_id_tbl(k);
15977 cz_pb_mgr.v_cz_des_feature_ft_typ_ref(rec_count) := v_cz_des_feature_ft_typ_tbl(k);
15978 END LOOP;
15979 END IF;
15980 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
15981 END IF; /* cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
15982
15983 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
15984 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');
15985 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');
15986 ELSE
15987 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);
15988 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);
15989 END IF;
15990
15991 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');
15992
15993 ------insert new records into cz_des_chart_features
15994 insert_des_chart_features(cz_pb_mgr.v_status_code);
15995 -------------release local pl/sql tables of des chart features
15996 v_cz_des_feature_id_old_tbl.DELETE;
15997 v_cz_des_feature_rule_id_tbl.DELETE;
15998 v_cz_des_feature_mrefl_id_tbl.DELETE;
15999 v_cz_des_feature_ft_typ_tbl.DELETE;
16000 ------------insert into cz_des_chart_cells
16001 clear_tables('cz_des_chart_cells', 'ref', cz_pb_mgr.v_status_code);
16002
16003 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16004 THEN
16005 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16006 LOOP
16007 v_cz_des_cells_rule_id_tbl.DELETE;
16008 v_cz_des_cells_sf_id_tbl.DELETE;
16009 v_cz_des_cells_sopt_id_tbl.DELETE;
16010 v_cz_des_cells_popt_id_tbl.DELETE;
16011 v_cz_des_cells_sexpl_id_tbl.DELETE;
16012 v_rule_type_tbl.DELETE;
16013
16014 BEGIN
16015 SELECT rul.rule_id, secondary_feature_id, primary_opt_id, secondary_opt_id
16016 , secondary_feat_expl_id, mark_char, rule_type
16017 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
16018 ,v_cz_des_cells_sexpl_id_tbl, v_cz_des_cells_mark_char_tbl, v_rule_type_tbl
16019 FROM cz_rules rul, cz_des_chart_cells dcc
16020 WHERE rul.deleted_flag = '0' AND rul.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i)
16021 AND rul.rule_id = dcc.rule_id AND dcc.deleted_flag = '0';
16022 EXCEPTION
16023 WHEN NO_DATA_FOUND
16024 THEN
16025 cz_pb_mgr.v_err_message := SUBSTR(SQLERRM, 1, 2000);
16026 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
16027 WHEN OTHERS
16028 THEN
16029 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_des_chart_cells', 'SQLERRM', SQLERRM);
16030 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.DESCELLS', SQLCODE);
16031 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16032 RAISE;
16033 END;
16034
16035 rec_count := cz_pb_mgr.v_cz_des_cells_sexpl_id_ref.COUNT;
16036
16040 LOOP
16037 IF (v_cz_des_cells_rule_id_tbl.COUNT > 0)
16038 THEN
16039 FOR k IN v_cz_des_cells_rule_id_tbl.FIRST .. v_cz_des_cells_rule_id_tbl.LAST
16041 rec_count := rec_count + 1;
16042 cz_pb_mgr.v_cz_des_cells_rule_id_old_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
16043 cz_pb_mgr.v_cz_des_cells_rule_id_new_ref(rec_count) := v_cz_des_cells_rule_id_tbl(k);
16044 cz_pb_mgr.v_cz_des_cells_sf_id_ref(rec_count) := v_cz_des_cells_sf_id_tbl(k);
16045 cz_pb_mgr.v_cz_des_cells_sopt_id_ref(rec_count) := v_cz_des_cells_sopt_id_tbl(k);
16046 cz_pb_mgr.v_cz_des_cells_popt_id_ref(rec_count) := v_cz_des_cells_popt_id_tbl(k);
16047 cz_pb_mgr.v_cz_des_cells_sexpl_id_ref(rec_count) := v_cz_des_cells_sexpl_id_tbl(k);
16048 cz_pb_mgr.v_cz_des_cells_mark_char_ref(rec_count) := v_cz_des_cells_mark_char_tbl(k);
16049 END LOOP;
16050 END IF;
16051 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_models_to_be_exported */
16052 END IF; /* end if of cz_pb_mgr.v_models_to_be_exported.COUNT > 0 */
16053
16054 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');
16055 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);
16056
16057 IF (cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id<>0) THEN
16058 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');
16059 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');
16060 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');
16061 ELSE
16062 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);
16063 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);
16064 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);
16065 END IF;
16066
16067 ------insert new records into cz_des_chart_cells
16068 insert_des_chart_cells(cz_pb_mgr.v_status_code);
16069
16070 --during model migration, if a rule_seq has a rule whose effectivity_set_id already
16071 --exists on the target, then set the rule effectivity to be
16072 --never effective for all the rules in that rule sequence
16073 --do this only if there is something to resolve(mm_v_ht_eff_set_tbl_t.COUNT >0)
16074 IF ( (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16075 AND (mm_v_tbl_rule_seq.COUNT > 0)
16076 AND (mm_v_ht_eff_set_tbl_t.COUNT > 0)
16077 )
16078 THEN
16079 mm_resolve_rule_seq_effsetid;
16080 END IF;
16081
16082 -------------release local pl/sql tables of cz des chart cells
16083 v_cz_des_cells_rule_id_tbl.DELETE;
16084 v_cz_des_cells_sf_id_tbl.DELETE;
16085 v_cz_des_cells_sopt_id_tbl.DELETE;
16086 v_cz_des_cells_popt_id_tbl.DELETE;
16087 v_cz_des_cells_sexpl_id_tbl.DELETE;
16088
16089 ELSE
16090 clear_tables('cz_lce_headers', 'ref', cz_pb_mgr.v_status_code);
16091 END IF;
16092 EXCEPTION
16093 WHEN OTHERS
16094 THEN
16095 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
16096 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_sql_err_msg, 'cz_pb_mgr.RULESCHEMA', SQLCODE);
16097 x_status := PUBLICATION_ERROR;
16098 RAISE pb_upload_rule_schema;
16099 END upload_rule_schema;
16100 -----------------------------------------------------------------------------------------------------
16101 PROCEDURE mm_raiseallpossiblesyncerrors
16102 AS
16103 v_prop_id cz_properties.property_id%TYPE;
16104 v_error_flag PLS_INTEGER := 0;
16105 v_null PLS_INTEGER;
16106 j PLS_INTEGER;
16107 v_target_item_type_name cz_item_types.name%TYPE;
16108
16109 v_null_table number_type_tbl;
16110
16111 BEGIN
16112 -- PROPERTY: check if there is atleast one property where the names match, but datatype does not
16113 -- ITEM_TYPES: check if there are more source item properties than target item properties
16114 -- ITEM TYPES: heck if there is atleast one item where the item_type is different
16115 -- UI CONTENT TEMPLATES: UI Content template failure - exact match on TEMPLATE_TYPE, MESSAGE_TYPE, but mismatch
16116 -- on either of ROOT_ELEMENT_TYPE, MAIN_MESSAGE_ID, PARENT_CONTAINER_TYPE,
16117 -- ROOT ELEMENT SIGNATURE_ID or ROOT_REGION_CODE
16118 -- USAGE: Name does not match, but there are already 64 Usages
16119 FOR i IN 1 .. v_remote_prop_ref.COUNT
16120 LOOP
16121 BEGIN
16122 EXECUTE IMMEDIATE 'SELECT data_type FROM cz_properties'
16123 || cz_pb_mgr.v_db_link
16124 || ' WHERE deleted_flag = ''0'' AND name = :1 AND NVL(src_application_id, 0) = :2'
16125 INTO v_null
16129 THEN
16126 USING v_property_record_ref(v_remote_prop_ref(i)).NAME, v_property_record_ref(v_remote_prop_ref(i)).src_application_id;
16127
16128 IF (v_null <> v_property_record_ref(v_remote_prop_ref(i)).data_type)
16130 --~> 'Property ''%PROPERTYNAME'' has a different data type on the target instance.'
16131 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);
16132 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16133 v_error_flag := 1;
16134 END IF;
16135 EXCEPTION
16136 WHEN NO_DATA_FOUND
16137 THEN
16138 NULL;
16139 END;
16140 END LOOP;
16141
16142 FOR i IN 1 .. v_item_types_new_ref.COUNT
16143 LOOP
16144 BEGIN
16145 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_types'
16146 || cz_pb_mgr.v_db_link
16147 || 'it '
16148 || ' WHERE it.deleted_flag = ''0'''
16149 || ' AND it.name = :1'
16150 || ' AND NVL(it.src_application_id, 0) = :2'
16151 INTO v_null
16152 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;
16153
16154 j := v_type_property_record_ref(v_item_types_new_ref(i)).FIRST;
16155
16156 WHILE(j IS NOT NULL)
16157 LOOP
16158 BEGIN
16159 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_types'
16160 || cz_pb_mgr.v_db_link
16161 || 'it, '
16162 || ' cz_item_type_properties'
16163 || cz_pb_mgr.v_db_link
16164 || 'tp, '
16165 || ' cz_properties'
16166 || cz_pb_mgr.v_db_link
16167 || ' pr '
16168 || ' WHERE it.deleted_flag = ''0'''
16169 || ' AND pr.deleted_flag = ''0'''
16170 || ' AND tp.deleted_flag = ''0'''
16171 || ' AND it.item_type_id = tp.item_type_id'
16172 || ' AND pr.property_id = tp.property_id'
16173 || ' AND it.name = :1'
16174 || ' AND NVL(it.src_application_id, 0) = :2'
16175 || ' AND pr.name = :3'
16176 || ' AND NVL(pr.src_application_id, 0) = :4'
16177 INTO v_null
16178 USING v_type_record_ref(v_item_types_new_ref(i)).NAME
16179 ,v_type_record_ref(v_item_types_new_ref(i)).src_application_id
16180 ,v_type_property_record_ref(v_item_types_new_ref(i))(j).NAME
16181 ,v_type_property_record_ref(v_item_types_new_ref(i))(j).src_application_id;
16182 EXCEPTION
16183 WHEN NO_DATA_FOUND
16184 THEN
16185 v_error_flag := 1;
16186 --~> 'Item type ''%ITEMTYPENAME'' has a different combination of properties on the target instance.'
16187 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);
16188 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16189 END;
16190
16191 j := v_type_property_record_ref(v_item_types_new_ref(i)).NEXT(j);
16192 END LOOP;
16193 EXCEPTION
16194 WHEN NO_DATA_FOUND
16195 THEN
16196 NULL;
16197 END;
16198 END LOOP;
16199
16200 FOR i IN 1 .. v_item_masters_tbl.COUNT
16201 LOOP
16202
16203 --Bug #6972667. This query can return several items with the same ref_part_nbr in different item types.
16204 --Judging from the SELECT NULL and empty exception block for no_data_found, the only purpose of this
16205 --query is to skip the second verification for items that don't exist on the target, so we can just
16206 --use BULK COLLECT.
16207
16208 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_masters'
16209 || cz_pb_mgr.v_db_link
16210 || ' it '
16211 || ' WHERE it.deleted_flag = ''0'''
16212 || ' AND it.ref_part_nbr = :1'
16213 || ' AND NVL(it.src_application_id, 0) = :2'
16214 || ' AND NVL(it.orig_sys_ref, ''0'') = :3'
16215 BULK COLLECT INTO v_null_table
16216 USING mm_v_itmst_ref_part_nbr_ref(i)
16217 , mm_v_itmst_src_app_id_ref(i)
16218 --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
16219 --source item_id
16220 , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
16221
16222 IF ( v_null_table.COUNT > 0 ) THEN
16223
16224 BEGIN
16228 || ' cz_item_types'
16225 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_item_masters'
16226 || cz_pb_mgr.v_db_link
16227 || ' it, '
16229 || cz_pb_mgr.v_db_link
16230 || ' ip '
16231 || ' WHERE it.deleted_flag = ''0'''
16232 || ' AND ip.deleted_flag = ''0'''
16233 || ' AND it.ref_part_nbr = :1'
16234 || ' AND NVL(it.src_application_id, 0) = :2'
16235 || ' AND ip.name = :3'
16236 || ' AND NVL(ip.src_application_id, 0) = :4'
16237 || ' AND NVL(it.orig_sys_ref, ''0'') = :5'
16238
16239 --Bug #6972667. Missing join condition.
16240
16241 || ' AND ip.item_type_id = it.item_type_id'
16242 INTO v_null
16243 USING mm_v_itmst_ref_part_nbr_ref(i)
16244 , mm_v_itmst_src_app_id_ref(i)
16245 , v_type_record_ref(v_item_types_tbl(i)).NAME
16246 , v_type_record_ref(v_item_types_tbl(i)).src_application_id
16247 --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
16248 --source item_id
16249 , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
16250 EXCEPTION
16251 WHEN NO_DATA_FOUND
16252 THEN
16253 v_error_flag := 1;
16254 --~> 'Item ''%ITEMNAME'' has a different item type on the target instance.'
16255 -- Bug 5219852; 06-Sep-2006; kdande; Modified the message to show the source and target item type names
16256 EXECUTE IMMEDIATE 'SELECT ip.name FROM cz_item_masters'
16257 || cz_pb_mgr.v_db_link
16258 || ' it, cz_item_types'
16259 || cz_pb_mgr.v_db_link
16260 || ' ip '
16261 || ' WHERE it.deleted_flag = ''0'''
16262 || ' AND ip.deleted_flag = ''0'''
16263 || ' AND it.ref_part_nbr = :1'
16264 || ' AND ip.item_type_id = it.item_type_id'
16265 || ' AND NVL(it.src_application_id, 0) = :2'
16266 || ' AND NVL(it.orig_sys_ref, ''0'') = :3'
16267 INTO v_target_item_type_name
16268 USING mm_v_itmst_ref_part_nbr_ref(i)
16269 , mm_v_itmst_src_app_id_ref(i)
16270 --IMPORTANT: this is bom-synchronized (if necessary) orig_sys_ref, hashed by
16271 --source item_id
16272 , NVL(mm_v_ht_items_orig_ref(v_item_masters_tbl(i)), '0');
16273 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_ITEM', 'ITEMNAME', mm_v_itmst_ref_part_nbr_ref(i),
16274 'SRCNAME', v_type_record_ref(v_item_types_tbl(i)).NAME,
16275 'TGTNAME', v_target_item_type_name);
16276 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16277 END;
16278 END IF; --v_null_table.COUNT > 0
16279 END LOOP;
16280
16281 IF (v_error_flag = 1)
16282 THEN
16283 RAISE cz_pb_global_synch;
16284 END IF;
16285 EXCEPTION
16286 WHEN cz_pb_global_synch
16287 THEN
16288 RAISE;
16289 WHEN OTHERS
16290 THEN
16291 --~>'Unexpected error during upfront validation: %ERRORTEXT'
16292 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_MM_UPVAL_UNEXPECTED', 'ERRORTEXT', SQLERRM);
16293 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16294 RAISE;
16295 END mm_raiseallpossiblesyncerrors;
16296 ------------------------------------------------------------------------------------------------
16297 --Bug #5186307. The bug is deferred.
16298 /*
16299 PROCEDURE split_item_origsysref( p_origsysref IN VARCHAR2
16300 , x_item_id OUT NOCOPY NUMBER
16301 , x_org_id OUT NOCOPY NUMBER) IS
16302 BEGIN
16303
16304 --The values can only be not null valid numbers, otherwise TO_NUMBER will fail.
16305
16306 x_item_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, 1, INSTR(p_origsysref, ':') - 1), 'NULL'));
16307 x_org_id := TO_NUMBER(NVL(SUBSTR(p_origsysref, INSTR(p_origsysref, ':') + 1), 'NULL'));
16308 END;
16309 */
16310 ------------------------------------------------------------------------------------------------
16311 --Bug #5186307. The bug is deferred, the function just returns the parameter.
16312 /*
16313 FUNCTION synch_item_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
16314
16315 l_item_id NUMBER;
16316 l_org_id NUMBER;
16317 BEGIN
16318
16319 IF(p_origsysref IS NULL)THEN
16320
16321 --This is an item with source application INV and null orig_sys_ref. Don't do anything for now,
16322 --but this may be a problem. Not sure if this can happen here, may be caught earlier.
16323
16327 IF(v_item_synched_osr.EXISTS(p_origsysref))THEN RETURN v_item_synched_osr(p_origsysref); END IF;
16324 RETURN NULL;
16325 END IF;
16326
16328
16329 --Just return the parameter.
16330
16331 --split_item_origsysref(p_origsysref, l_item_id, l_org_id);
16332
16333 v_item_synched_osr(p_origsysref) := p_origsysref;
16334 RETURN v_item_synched_osr(p_origsysref);
16335 END;
16336 */
16337 ------------------------------------------------------------------------------------------------
16338 --Bug #5186307. The bug is deferred, the function just returns the parameter.
16339 /*
16340 FUNCTION synch_itemtype_origsysref(p_origsysref IN VARCHAR2) RETURN VARCHAR2 IS
16341
16342 l_catalog_id NUMBER;
16343 BEGIN
16344
16345 IF(p_origsysref IS NULL)THEN
16346
16347 --This is an item type with source application INV and null orig_sys_ref. Don't do anything for
16348 --now, but this may be a problem. Not sure if this can happen here, may be caught earlier.
16349
16350 RETURN NULL;
16351 END IF;
16352
16353 IF(v_itemtype_synched_osr.EXISTS(p_origsysref))THEN RETURN v_itemtype_synched_osr(p_origsysref); END IF;
16354
16355 --The value can only be a valid not null number.
16356
16357 l_catalog_id := TO_NUMBER(p_origsysref);
16358
16359 --Just return the parameter.
16360
16361 v_itemtype_synched_osr(p_origsysref) := p_origsysref;
16362 RETURN v_itemtype_synched_osr(p_origsysref);
16363 END;
16364 */
16365 ------------------------------------------------------------------------------------------------
16366 --This procedure reads the item/property data into the arrays, previously done by insert_item_schema,
16367 --and performs the upfron validations for model migration.
16368 PROCEDURE read_item_schema
16369 IS
16370 v_cz_items_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
16371 v_cz_types_old_ref_idx_ref cz_pb_mgr.t_ref_idx_vc2;
16372 v_item_types_orig_tbl cz_pb_mgr.orig_sys_ref_type;
16373 v_remote_prop_tbl cz_pb_mgr.t_ref;
16374 v_prop_type_tbl cz_pb_mgr.t_ref;
16375 v_prop_src_app_tbl cz_pb_mgr.t_ref;
16376 v_prop_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
16377 v_type_name_tbl cz_pb_mgr.varchar_type_4000_tbl;
16378 v_type_src_app_tbl cz_pb_mgr.t_ref;
16379 v_bom_flg_tbl cz_pb_mgr.t_ref;
16380 v_bom_flg_ref cz_pb_mgr.t_ref;
16381 plsql_table_list cz_pb_mgr.col_plsql_table_list;
16382 rec_count NUMBER;
16383 mm_v_itmst_ref_part_nbr_tbl varchar_type_4000_tbl;
16384 mm_v_itmst_src_app_id_tbl t_ref;
16385 BEGIN
16386 ---COLLECT ALL THE SOURCE ITEM MASTER RECORDS
16387 IF (cz_pb_mgr.v_ps_item_id_tbl.COUNT > 0)
16388 THEN
16389 cz_pb_mgr.v_item_masters_tbl.DELETE;
16390 cz_pb_mgr.v_item_types_tbl.DELETE;
16391 cz_pb_mgr.v_items_orig_ref.DELETE;
16392
16393 FOR i IN cz_pb_mgr.v_ps_item_id_tbl.FIRST .. cz_pb_mgr.v_ps_item_id_tbl.LAST
16394 LOOP
16395 cz_pb_mgr.v_item_masters_ref.DELETE;
16396 cz_pb_mgr.v_item_types_ref.DELETE;
16397 v_bom_flg_tbl.DELETE;
16398 v_item_types_orig_tbl.DELETE;
16399
16400 BEGIN
16401 IF ((cz_pb_mgr.v_ps_type_old_tbl(i) = 436) OR(cz_pb_mgr.v_ps_type_old_tbl(i) = 437) OR(cz_pb_mgr.v_ps_type_old_tbl(i) = 438))
16402 THEN
16403 SELECT item_id, item_type_id
16404 ,DECODE(cz_pb_mgr.bomsynch_flag
16405 ,'Y', NVL(cz_bom_synch.itemmaster_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
16406 ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
16407 )
16408 ,bom_item, ref_part_nbr, NVL(src_application_id, 0)
16409 BULK COLLECT INTO cz_pb_mgr.v_item_masters_ref, cz_pb_mgr.v_item_types_ref
16410 ,v_item_types_orig_tbl
16411 ,v_bom_flg_tbl, mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
16412 FROM cz_item_masters
16413 WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
16414 AND cz_item_masters.item_id IS NOT NULL
16415 AND cz_item_masters.deleted_flag = '0';
16416 ELSE
16417 SELECT item_id, item_type_id, orig_sys_ref, nonbom_item
16418 ,ref_part_nbr, NVL(src_application_id, 0)
16419 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
16420 ,mm_v_itmst_ref_part_nbr_tbl, mm_v_itmst_src_app_id_tbl
16421 FROM cz_item_masters
16422 WHERE cz_item_masters.item_id = cz_pb_mgr.v_ps_item_id_tbl(i)
16423 AND cz_item_masters.item_id IS NOT NULL
16424 AND cz_item_masters.deleted_flag = '0';
16425 END IF;
16426 EXCEPTION
16427 WHEN NO_DATA_FOUND
16428 THEN
16429 -----if no items exist, logging a message is not required
16430 NULL;
16431 WHEN OTHERS
16432 THEN
16433 RAISE;
16434 END;
16435
16436 rec_count := cz_pb_mgr.v_item_masters_tbl.COUNT;
16437
16438 IF (cz_pb_mgr.v_item_masters_ref.COUNT > 0)
16442 IF (cz_pb_mgr.v_item_masters_ref(k) IS NOT NULL)
16439 THEN
16440 FOR k IN cz_pb_mgr.v_item_masters_ref.FIRST .. cz_pb_mgr.v_item_masters_ref.LAST
16441 LOOP
16443 THEN
16444 IF (NOT v_cz_items_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_masters_ref(k)))
16445 THEN
16446 rec_count := rec_count + 1;
16447 cz_pb_mgr.v_item_masters_tbl(rec_count) := cz_pb_mgr.v_item_masters_ref(k);
16448 cz_pb_mgr.mm_v_itmst_ref_part_nbr_ref(rec_count) := mm_v_itmst_ref_part_nbr_tbl(k);
16449 cz_pb_mgr.mm_v_itmst_src_app_id_ref(rec_count) := mm_v_itmst_src_app_id_tbl(k);
16450 cz_pb_mgr.v_item_types_tbl(rec_count) := cz_pb_mgr.v_item_types_ref(k);
16451 cz_pb_mgr.v_items_orig_ref(rec_count) := v_item_types_orig_tbl(k);
16452 --for model migration, maintain a sync table to get the
16453 --orig_sys_ref from a given item
16454 mm_v_ht_items_orig_ref(cz_pb_mgr.v_item_masters_ref(k)) := v_item_types_orig_tbl(k);
16455 v_cz_items_old_ref_idx_ref(cz_pb_mgr.v_item_masters_ref(k)) := cz_pb_mgr.v_item_masters_ref(k);
16456 v_bom_flg_ref(rec_count) := v_bom_flg_tbl(k);
16457 END IF;
16458 END IF;
16459 END LOOP;
16460 END IF; /* end if of cz_pb_mgr.v_item_masters_ref.COUNT > 0 */
16461 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
16462 END IF; /* end if of cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
16463
16464 IF (cz_pb_mgr.v_item_types_tbl.COUNT > 0)
16465 THEN
16466 cz_pb_mgr.v_item_types_new_ref.DELETE;
16467 cz_pb_mgr.v_item_types_orig_ref.DELETE;
16468 v_cz_types_old_ref_idx_ref.DELETE;
16469
16470 FOR i IN cz_pb_mgr.v_item_types_tbl.FIRST .. cz_pb_mgr.v_item_types_tbl.LAST
16471 LOOP
16472 v_item_types_orig_tbl.DELETE;
16473 cz_pb_mgr.v_item_types_ref.DELETE;
16474
16475 BEGIN
16476 IF ((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = bom_item))
16477 THEN
16478 SELECT item_type_id, NAME, NVL(src_application_id, 0)
16479 ,DECODE(cz_pb_mgr.bomsynch_flag
16480 ,'Y', NVL(cz_bom_synch.itemtype_origsysref(orig_sys_ref), cz_pb_mgr.null_string)
16481 ,NVL(orig_sys_ref, cz_pb_mgr.null_string)
16482 )
16483 BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl
16484 ,v_item_types_orig_tbl
16485 FROM cz_item_types
16486 WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
16487 ELSIF((cz_pb_mgr.v_item_types_tbl(i) IS NOT NULL) AND(v_bom_flg_ref(i) = nonbom_item))
16488 THEN
16489 SELECT item_type_id, NAME, NVL(src_application_id, 0), orig_sys_ref
16490 BULK COLLECT INTO cz_pb_mgr.v_item_types_ref, v_type_name_tbl, v_type_src_app_tbl, v_item_types_orig_tbl
16491 FROM cz_item_types
16492 WHERE cz_item_types.item_type_id = cz_pb_mgr.v_item_types_tbl(i) AND cz_item_types.deleted_flag = '0';
16493 END IF;
16494 EXCEPTION
16495 WHEN NO_DATA_FOUND
16496 THEN
16497 NULL;
16498 WHEN OTHERS
16499 THEN
16500 RAISE;
16501 END;
16502
16503 IF (cz_pb_mgr.v_item_types_ref.COUNT > 0)
16504 THEN
16505 FOR k IN cz_pb_mgr.v_item_types_ref.FIRST .. cz_pb_mgr.v_item_types_ref.LAST
16506 LOOP
16507 IF (cz_pb_mgr.v_item_types_ref(k) IS NOT NULL)
16508 THEN
16509 IF (NOT v_cz_types_old_ref_idx_ref.EXISTS(cz_pb_mgr.v_item_types_ref(k)))
16510 THEN
16511 rec_count := cz_pb_mgr.v_item_types_new_ref.COUNT + 1;
16512 cz_pb_mgr.v_item_types_new_ref(rec_count) := cz_pb_mgr.v_item_types_ref(k);
16513 cz_pb_mgr.v_item_types_orig_ref(rec_count) := v_item_types_orig_tbl(k);
16514 --for model migration, maintain a sync table to get the
16515 --orig_sys_ref from a given item type
16516 mm_v_ht_item_types_orig_ref(cz_pb_mgr.v_item_types_ref(k)) := v_item_types_orig_tbl(k);
16517 v_cz_types_old_ref_idx_ref(cz_pb_mgr.v_item_types_ref(k)) := cz_pb_mgr.v_item_types_ref(k);
16518 v_type_record_ref(v_item_types_ref(k)).NAME := v_type_name_tbl(k);
16519 v_type_record_ref(v_item_types_ref(k)).src_application_id := v_type_src_app_tbl(k);
16520 END IF;
16521 END IF;
16522 END LOOP;
16523 END IF;
16524 END LOOP;
16525 END IF;
16526
16527 --~> Properties
16528 cz_pb_mgr.v_remote_prop_ref.DELETE;
16529 v_property_record_ref.DELETE;
16530
16531 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
16535 v_remote_prop_tbl.DELETE;
16532 THEN
16533 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
16534 LOOP
16536 BEGIN
16537 SELECT property_id, data_type, name, src_application_id
16538 BULK COLLECT INTO v_remote_prop_tbl, v_prop_type_tbl, v_prop_name_tbl, v_prop_src_app_tbl
16539 FROM (SELECT itp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
16540 from cz_item_masters im, cz_item_type_properties itp, cz_ps_nodes psn, cz_properties p
16541 where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.deleted_flag = '0'
16542 and psn.item_id = im.item_id AND im.deleted_flag = '0' and im.item_type_id = itp.item_type_id
16543 AND itp.deleted_flag = '0' and itp.property_id = p.property_id and p.deleted_flag = '0'
16544 UNION
16545 SELECT psp.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
16546 from cz_ps_prop_vals psp, cz_ps_nodes psn, cz_properties p
16547 where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.ps_node_id = psp.ps_node_id
16548 and psn.deleted_flag = '0' AND psp.deleted_Flag = '0' and psp.property_id = p.property_id
16549 and p.deleted_flag = '0'
16550 UNION
16551 SELECT ipv.property_id, p.data_type, p.name, nvl(p.src_application_id, 0) AS src_application_id
16552 from cz_ps_nodes psn, cz_item_property_values ipv, cz_properties p
16553 where psn.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) and psn.item_id = ipv.item_id
16554 and psn.deleted_flag = '0' and ipv.deleted_flag = '0' and ipv.property_id = p.property_id
16555 and p.deleted_flag = '0');
16556
16557 EXCEPTION
16558 WHEN no_data_found THEN
16559 NULL;
16560 WHEN OTHERS THEN
16561 log_pb_errors(SQLERRM,1,'cz_pb_mgr PROP SELECT',SQLCODE);
16562 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16563 RAISE;
16564 END;
16565
16566 IF (v_remote_prop_tbl.COUNT > 0)
16567 THEN
16568 FOR j IN v_remote_prop_tbl.FIRST .. v_remote_prop_tbl.LAST
16569 LOOP
16570 IF (v_remote_prop_tbl(j) IS NOT NULL)
16571 THEN
16572 rec_count := cz_pb_mgr.v_remote_prop_ref.COUNT + 1;
16573 cz_pb_mgr.v_remote_prop_ref(rec_count) := v_remote_prop_tbl(j);
16574
16575 IF (NOT v_property_record_ref.EXISTS(v_remote_prop_tbl(j)))
16576 THEN
16577 v_property_record_ref(v_remote_prop_tbl(j)).NAME := v_prop_name_tbl(j);
16578 v_property_record_ref(v_remote_prop_tbl(j)).data_type := v_prop_type_tbl(j);
16579 v_property_record_ref(v_remote_prop_tbl(j)).src_application_id := v_prop_src_app_tbl(j);
16580 END IF;
16581 END IF;
16582 END LOOP;
16583 END IF;
16584 END LOOP;
16585 END IF;
16586
16587 -- The copy of item type props and item prop values is uncessary for publication (4861805)
16588 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
16589 --~> Item type properties
16590 IF (cz_pb_mgr.v_item_types_new_ref.COUNT > 0)
16591 THEN
16592 cz_pb_mgr.v_item_prop_id_tbl.DELETE;
16593 cz_pb_mgr.v_item_prop_type_tbl.DELETE;
16594 cz_pb_mgr.v_item_prop_num_val_tbl.DELETE;
16595 cz_pb_mgr.v_item_prop_data_typ_tbl.DELETE;
16596
16597 FOR i IN cz_pb_mgr.v_item_types_new_ref.FIRST .. cz_pb_mgr.v_item_types_new_ref.LAST
16598 LOOP
16599 cz_pb_mgr.v_item_prop_id_ref.DELETE;
16600 cz_pb_mgr.v_item_prop_type_ref.DELETE;
16601 cz_pb_mgr.v_item_prop_num_val_ref.DELETE;
16602 cz_pb_mgr.v_item_prop_data_typ_ref.DELETE;
16603
16604 BEGIN
16605 SELECT cz_item_type_properties.property_id, cz_item_type_properties.item_type_id,cz_properties.def_num_value
16606 ,cz_properties.data_type
16607 BULK COLLECT INTO cz_pb_mgr.v_item_prop_id_ref, cz_pb_mgr.v_item_prop_type_ref,cz_pb_mgr.v_item_prop_num_val_ref
16608 ,cz_pb_mgr.v_item_prop_data_typ_ref
16609 FROM cz_item_type_properties, cz_properties
16610 WHERE cz_item_type_properties.item_type_id = cz_pb_mgr.v_item_types_new_ref(i)
16611 AND cz_properties.deleted_flag = '0'
16612 AND cz_item_type_properties.property_id =cz_properties.property_id
16613 AND cz_item_type_properties.deleted_flag = '0';
16614 EXCEPTION
16615 WHEN NO_DATA_FOUND
16616 THEN
16617 NULL;
16618 WHEN OTHERS
16619 THEN
16620 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_item_type_properties', 'SQLERRM', SQLERRM);
16621 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPE', SQLCODE);
16622 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
16623 END;
16624
16625 rec_count := cz_pb_mgr.v_item_prop_id_tbl.COUNT;
16626
16627 IF (cz_pb_mgr.v_item_prop_id_ref.COUNT > 0)
16628 THEN
16632 cz_pb_mgr.v_item_prop_id_tbl(rec_count) := cz_pb_mgr.v_item_prop_id_ref(k);
16629 FOR k IN cz_pb_mgr.v_item_prop_id_ref.FIRST .. cz_pb_mgr.v_item_prop_id_ref.LAST
16630 LOOP
16631 rec_count := rec_count + 1;
16633 cz_pb_mgr.v_item_prop_type_tbl(rec_count) := cz_pb_mgr.v_item_prop_type_ref(k);
16634 cz_pb_mgr.v_item_prop_num_val_tbl(rec_count):=cz_pb_mgr.v_item_prop_num_val_ref(k);
16635 cz_pb_mgr.v_item_prop_data_typ_tbl(rec_count):=cz_pb_mgr.v_item_prop_data_typ_ref(k);
16636 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));
16637 END LOOP;
16638 END IF;
16639 END LOOP; -- end loop of FOR I IN cz_pb_mgr.v_item_types_tbl
16640 END IF; -- cz_pb_mgr.v_item_types_new_ref.COUNT > 0
16641
16642 IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
16643 THEN
16644 cz_pb_mgr.v_it_prop_vals_id_tbl.DELETE;
16645 cz_pb_mgr.v_it_prop_vals_item_tbl.DELETE;
16646
16647 FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
16648 LOOP
16649 cz_pb_mgr.v_it_prop_vals_id_ref.DELETE;
16650 cz_pb_mgr.v_it_prop_vals_item_ref.DELETE;
16651 cz_pb_mgr.v_it_prop_value_ref.DELETE;
16652
16653 BEGIN
16654 SELECT property_id, item_id
16655 BULK COLLECT INTO cz_pb_mgr.v_it_prop_vals_id_ref, cz_pb_mgr.v_it_prop_vals_item_ref
16656 FROM cz_item_property_values
16657 WHERE cz_item_property_values.item_id = cz_pb_mgr.v_item_masters_tbl(i) AND deleted_flag = '0';
16658 EXCEPTION
16659 WHEN NO_DATA_FOUND
16660 THEN
16661 cz_pb_mgr.v_err_message := 'No item property value found for item id: ' || TO_CHAR(cz_pb_mgr.v_item_masters_tbl(i));
16662 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.ITEMTYPES', SQLCODE);
16663 WHEN OTHERS
16664 THEN
16665 RAISE;
16666 END;
16667
16668 rec_count := cz_pb_mgr.v_it_prop_vals_id_tbl.COUNT;
16669
16670 IF (cz_pb_mgr.v_it_prop_vals_id_ref.COUNT > 0)
16671 THEN
16672 FOR k IN cz_pb_mgr.v_it_prop_vals_id_ref.FIRST .. cz_pb_mgr.v_it_prop_vals_id_ref.LAST
16673 LOOP
16674 rec_count := rec_count + 1;
16675 cz_pb_mgr.v_it_prop_vals_id_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_id_ref(k);
16676 cz_pb_mgr.v_it_prop_vals_item_tbl(rec_count) := cz_pb_mgr.v_it_prop_vals_item_ref(k);
16677 END LOOP;
16678 END IF;
16679 END LOOP; -- end loop of FOR I IN cz_pb_mgr.v_item_masters_tbl
16680 END IF; -- end if of cz_pb_mgr.v_item_masters_tbl.COUNT > 0
16681 END IF;
16682
16683 --Bug #5186307. Some of the item and item types can be bom, although corresponding ps nodes and the whole
16684 --model can be non-bom (item-based ps nodes and populators). For a non-bom model bom synchronization will
16685 --not be called, and it is just impossible to call it. However, the orig_sys_refs of the bom items and
16686 --item types still need to be synchronized. The following code implements this synchronization for a non-
16687 --bom model.
16688
16689 --The bug is deferred.
16690 /*
16691 IF(cz_pb_mgr.bomsynch_flag = 'N' AND cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)THEN
16692
16693 FOR i IN 1..v_item_masters_tbl.COUNT LOOP
16694
16695 IF(mm_v_itmst_src_app_id_ref(i) = 401)THEN
16696
16697 v_items_orig_ref(i) := synch_item_origsysref(v_items_orig_ref(i));
16698 END IF;
16699 END LOOP;
16700
16701 FOR i IN 1..v_item_types_new_ref.COUNT LOOP
16702
16703 IF(v_type_record_ref(v_item_types_new_ref(i)).src_application_id = 702)THEN
16704
16705 v_item_types_orig_ref(i) := synch_itemtype_origsysref(v_item_types_orig_ref(i));
16706 END IF;
16707 END LOOP;
16708 END IF;
16709 */
16710 --Now run the upfront validations for model migration.
16711 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16712 THEN
16713 mm_raiseallpossiblesyncerrors;
16714 END IF;
16715 END;
16716 -----------------------------------------------------------------------------------------------------
16717 -------------- Load data : procedure used to export data
16718 PROCEDURE load_data(
16719 v_publication_id IN cz_model_publications.publication_id%TYPE
16720 ,v_root_model_id IN cz_model_publications.model_id%TYPE
16721 ,v_server_id IN cz_model_publications.server_id%TYPE
16722 ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
16723 ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
16724 )
16725 AS
16726 v_db_link VARCHAR2(128);
16727 seq_cv ref_cursor;
16728 rec_count PLS_INTEGER := 0;
16729 resolution_status VARCHAR2(200);
16730 v_copy_rules_flag VARCHAR2(3) := '';
16731 plsql_table_list cz_pb_mgr.col_plsql_table_list;
16732 BEGIN
16733 -------select value of setting id CopyRules from cz_db_settings
16734 IF (cz_pb_mgr.g_log_timing = publication_timing)
16735 THEN
16736 log_timing_message('start get_copy_rules_flg');
16737 END IF;
16738
16739 get_copy_rules_flg(v_copy_rules_flag);
16740
16741 IF (cz_pb_mgr.g_log_timing = publication_timing)
16745
16742 THEN
16743 log_timing_message('end get_copy_rules_flg: copy_rules_flag='||v_copy_rules_flag);
16744 END IF;
16746 IF (copy_rules = 'NO')
16747 THEN
16748 v_copy_rules_flag := 'NO';
16749 END IF;
16750
16751 ---------check languages on source and target instances
16752 IF (cz_pb_mgr.g_log_timing = publication_timing)
16753 THEN
16754 log_timing_message('start pb_language_check');
16755 END IF;
16756
16757 pb_language_check;
16758
16759 IF (cz_pb_mgr.g_log_timing = publication_timing)
16760 THEN
16761 log_timing_message('end pb_language_check');
16762 END IF;
16763
16764 -- load the ps nodes needed for ps_prop_vals and items
16765 -- this process of getting all the ps node information used to happen in upload_ps_structure, but
16766 -- model migration needed this to happen much before that
16767 mm_v_ht_item_types_orig_ref.DELETE;
16768 mm_v_ht_items_orig_ref.DELETE;
16769 mm_loadoldpsnodesforitems;
16770 IF (cz_pb_mgr.v_server_id <> 0 ) THEN
16771 read_item_schema;
16772 END IF;
16773
16774 --------upload item sub-schema
16775 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16776 THEN
16777 IF (cz_pb_mgr.g_log_timing = publication_timing)
16778 THEN
16779 log_timing_message('start upload_item_schema');
16780 END IF;
16781
16782 --upload_item_schema used to to happen after upload_ps_structure, upload_ui_schema
16783 --but model migration required this to happen earlier. Moving this did not seem to affect
16784 --publication.
16785 upload_item_schema(cz_pb_mgr.v_cz_ps_nodes_old_tbl, cz_pb_mgr.v_status_code);
16786
16787 IF (cz_pb_mgr.g_log_timing = publication_timing)
16788 THEN
16789 log_timing_message('end upload_item_schema');
16790 END IF;
16791 END IF;
16792
16793 ------export product structure
16794 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16795 THEN
16796 IF (cz_pb_mgr.g_log_timing = publication_timing)
16797 THEN
16798 log_timing_message('start upload_ps_structure');
16799 END IF;
16800
16801 upload_ps_structure(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
16802
16803 IF (cz_pb_mgr.g_log_timing = publication_timing)
16804 THEN
16805 log_timing_message('end upload_ps_structure');
16806 END IF;
16807 END IF;
16808
16809 --------------upload UI Schema
16810 IF (cz_pb_mgr.g_log_timing = publication_timing)
16811 THEN
16812 log_timing_message('start upload_ui_schema');
16813 END IF;
16814
16815 upload_ui_schema(cz_pb_mgr.v_models_to_be_exported, cz_pb_mgr.v_status_code, p_copy_nonjradui);
16816
16817 IF (cz_pb_mgr.g_log_timing = publication_timing)
16818 THEN
16819 log_timing_message('end upload_ui_schema');
16820 END IF;
16821
16822 ------upload rule schema
16823 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
16824 THEN
16825 IF (cz_pb_mgr.g_log_timing = publication_timing)
16826 THEN
16827 log_timing_message('start upload_rule_schema');
16828 END IF;
16829
16830 upload_rule_schema(cz_pb_mgr.v_models_to_be_exported, v_copy_rules_flag, cz_pb_mgr.v_status_code);
16831
16832 IF (cz_pb_mgr.g_log_timing = publication_timing)
16833 THEN
16834 log_timing_message('end upload_rule_schema');
16835 END IF;
16836 END IF;
16837
16838 x_status_code := cz_pb_mgr.v_status_code;
16839 EXCEPTION
16840 WHEN cz_pb_global_synch
16841 THEN
16842 --~> 'Errors in upfront validation, unable to continue.'
16843 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_UPVAL_ERRORS');
16844 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'Upfront Validation', 70000);
16845 x_status_code := PUBLICATION_ERROR;
16846 WHEN pb_upload_ps_schema
16847 THEN
16848 cz_pb_mgr.v_err_message := 'Error in export of product structure for publication id : ' || cz_pb_mgr.v_publication_id || ' : ' || SQLERRM;
16849 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PRODSTRUCTURE', SQLCODE);
16850 x_status_code := PUBLICATION_ERROR;
16851 WHEN pb_upload_ui_schema
16852 THEN
16853 cz_pb_mgr.v_err_message := 'Error in upload of UI schema for publication id : ' || cz_pb_mgr.v_publication_id;
16854 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADUISCHEMA', SQLCODE);
16855 x_status_code := PUBLICATION_ERROR;
16856 WHEN pb_upload_rule_schema
16857 THEN
16858 cz_pb_mgr.v_err_message := 'Error in upload of RULE schema for publication id : ' || cz_pb_mgr.v_publication_id || ':' || SQLERRM;
16859 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADRULESCHEMA', SQLCODE);
16860 x_status_code := PUBLICATION_ERROR;
16861 WHEN pb_upload_item_schema
16862 THEN
16863 cz_pb_mgr.v_err_message := 'Error in upload of ITEM schema for publication id : ' || cz_pb_mgr.v_publication_id;
16864 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.UPLOADITEMSCHEMA', SQLCODE);
16868 x_status_code := PUBLICATION_ERROR;
16865 x_status_code := PUBLICATION_ERROR;
16866 WHEN OTHERS
16867 THEN
16869 cz_pb_mgr.v_err_message := 'Fatal error occured during data upload ';
16870 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:ENDLOADDATA', SQLCODE);
16871 END load_data;
16872
16873 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16874 PROCEDURE insert_tmp_pub(p_temp_id IN NUMBER)
16875 IS
16876 l_old_publication_id NUMBER;
16877 l_remote_publication_id NUMBER;
16878 l_new_publication_id NUMBER;
16879 v_inst_str VARCHAR2(2000);
16880 BEGIN
16881 v_inst_str :=
16882 'UPDATE cz_model_publications set deleted_flag = ''1'' WHERE object_id := :1 '
16883 || ' '
16884 || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
16885
16886 EXECUTE IMMEDIATE v_inst_str
16887 USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
16888
16889 COMMIT;
16890 v_inst_str :=
16891 'UPDATE cz_model_publications'
16892 || cz_pb_mgr.v_db_link
16893 || ' set deleted_flag = ''1'' WHERE object_id := :1'
16894 || ' '
16895 || 'and object_type = :2 and server_id = :3 and source_target_flag = :4';
16896
16897 EXECUTE IMMEDIATE v_inst_str
16898 USING p_temp_id, 'UIT', cz_pb_mgr.v_db_link, g_source_flag;
16899
16900 COMMIT;
16901
16902 SELECT cz_model_publications_s.NEXTVAL
16903 INTO l_old_publication_id
16904 FROM DUAL;
16905
16906 l_remote_publication_id :=
16907 cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_model_publications_seq
16908 , 'cz_model_publications_s.nextval' || cz_pb_mgr.v_db_link
16909 ,cz_pb_mgr.v_oraclesequenceincr
16910 );
16911 v_inst_str :=
16912 'INSERT INTO cz_model_publications'
16913 || ' '
16914 || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
16915 || ' '
16916 || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
16917 || ' '
16918 || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
16919 || ' '
16920 || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
16921 || ' '
16922 || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
16923 || ' '
16924 || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
16925 || ' '
16926 || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
16927 || g_source_flag
16928 || ''',:4,SOURCE_UI_DEF_ID,'
16929 || ' '
16930 || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag FROM DUAL ';
16931
16932 EXECUTE IMMEDIATE v_inst_str
16933 USING l_old_publication_id, p_temp_id, p_temp_id, l_remote_publication_id;
16934
16935 v_inst_str :=
16936 'INSERT INTO cz_model_publications'
16937 || cz_pb_mgr.v_db_link
16938 || ''
16939 || ' '
16940 || '(PUBLICATION_ID,MODEL_ID,OBJECT_ID,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY'
16941 || ' '
16942 || ',PUBLICATION_MODE,UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,EXPORT_STATUS,MODEL_PERSISTENT_ID'
16943 || ' '
16944 || ',DELETED_FLAG,MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,SOURCE_TARGET_FLAG'
16945 || ' '
16946 || ',REMOTE_PUBLICATION_ID,SOURCE_UI_DEF_ID,SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag )'
16947 || ' '
16948 || 'SELECT :1,:2,:3,OBJECT_TYPE,SERVER_ID,ORGANIZATION_ID,TOP_ITEM_ID,PRODUCT_KEY,PUBLICATION_MODE,'
16949 || ' '
16950 || 'UI_DEF_ID,UI_STYLE,APPLICABLE_FROM,APPLICABLE_UNTIL,''OK'',MODEL_PERSISTENT_ID,DELETED_FLAG,'
16951 || ' '
16952 || 'MODEL_LAST_STRUCT_UPDATE,MODEL_LAST_LOGIC_UPDATE,MODEL_LAST_UPDATED,'''
16953 || g_target_flag
16954 || ''',:4,SOURCE_UI_DEF_ID,'
16955 || ' '
16956 || 'SOURCE_MODEL_ID,CONTAINER,PAGE_LAYOUT,disabled_flag FROM DUAL ';
16957
16958 EXECUTE IMMEDIATE v_inst_str
16959 USING l_remote_publication_id, p_temp_id, p_temp_id, l_old_publication_id;
16960
16961 COMMIT;
16962 EXCEPTION
16963 WHEN OTHERS
16964 THEN
16965 NULL;
16966 END;
16967
16968 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
16969 ----will global template have a button_bar_template
16970 ----may be not
16971
16972 PROCEDURE export_global_template(p_template_id IN NUMBER, p_publication_id IN NUMBER)
16973 IS
16974 rec_count NUMBER := 0;
16975 l_new_document VARCHAR2(255);
16976 l_document_id NUMBER;
16977 l_str VARCHAR2(2000);
16978 BEGIN
16979 -----bulk collect from templates
16980 cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
16981 cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
16982 cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
16983 cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
16984 cz_pb_mgr.g_ui_templates_title_ref.DELETE;
16988 cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
16985 cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
16986 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
16987 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
16989
16990 IF (cz_pb_mgr.v_server_id = 0)
16991 THEN
16992 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ui_templates
16993 , 'cz_ui_templates_s.nextval' || cz_pb_mgr.v_db_link
16994 ,cz_pb_mgr.v_oraclesequenceincr
16995 )
16996 ,template_id, main_message_id, title_id
16997 ,jrad_doc, -1, 0
16998 ,0
16999 BULK COLLECT INTO cz_pb_mgr.g_ui_templates_new_temp_id_ref
17000 ,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
17001 ,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
17002 ,cz_pb_mgr.g_ui_templates_ui_def_old_ref
17003 FROM cz_ui_templates
17004 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;
17005 ELSE
17006 SELECT template_id, template_id, main_message_id
17007 ,title_id, jrad_doc, -1
17008 ,0, 0
17009 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
17010 ,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
17011 ,cz_pb_mgr.v_intl_text_ui_tbl, cz_pb_mgr.g_ui_templates_ui_def_old_ref
17012 FROM cz_ui_templates
17013 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;
17014 END IF;
17015
17016 ------main msg
17017 insert_intl_texts(cz_pb_mgr.g_ui_templates_msg_id_ref, 'main message ids of cz ui templates', TRUE);
17018 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');
17019 ----title id
17020 insert_intl_texts(cz_pb_mgr.g_ui_templates_title_ref, 'main message ids of cz ui templates', TRUE);
17021 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');
17022
17023 IF (cz_pb_mgr.g_ui_templates_jrad_new_ref.COUNT > 0)
17024 THEN
17025 FOR doc IN cz_pb_mgr.g_ui_templates_jrad_new_ref.FIRST .. cz_pb_mgr.g_ui_templates_jrad_new_ref.LAST
17026 LOOP
17027 IF (cz_pb_mgr.g_ui_templates_jrad_new_ref(doc) IS NOT NULL)
17028 THEN
17029 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);
17030 END IF;
17031 END LOOP;
17032 END IF;
17033
17034 insert_ui_templates;
17035
17036 COMMIT;
17037 EXCEPTION
17038 WHEN OTHERS
17039 THEN
17040 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17041 cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || p_template_id || ' : ' || SQLERRM;
17042 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
17043 RAISE;
17044 END export_global_template;
17045
17046 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17047 PROCEDURE export_global_template
17048 IS
17049 rec_count NUMBER := 0;
17050 l_new_document VARCHAR2(255);
17051 l_document_id NUMBER;
17052 l_str VARCHAR2(2000);
17053 l_global_temp_tbl cz_pb_mgr.t_ref;
17054 BEGIN
17055 -----bulk collect from templates
17056 cz_pb_mgr.g_ui_templates_old_temp_id_ref.DELETE;
17057 cz_pb_mgr.g_ui_templates_new_temp_id_ref.DELETE;
17058 cz_pb_mgr.g_ui_templates_idx_temp_ref.DELETE;
17059 cz_pb_mgr.g_ui_templates_msg_id_ref.DELETE;
17060 cz_pb_mgr.g_ui_templates_title_ref.DELETE;
17061 cz_pb_mgr.g_ui_templates_jrad_new_ref.DELETE;
17062 cz_pb_mgr.v_intl_text_ui_tbl.DELETE;
17063 cz_pb_mgr.v_intl_text_model_tbl.DELETE;
17064 cz_pb_mgr.g_ui_templates_button_tbl.DELETE;
17065
17066 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17067 THEN
17068 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17069 LOOP
17070 l_global_temp_tbl.DELETE;
17071
17072 SELECT template_id
17073 BULK COLLECT INTO l_global_temp_tbl
17074 FROM cz_ui_collect_tmpls_v
17075 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;
17076
17077 IF (l_global_temp_tbl.COUNT > 0)
17078 THEN
17079 rec_count := cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT;
17080
17081 FOR j IN l_global_temp_tbl.FIRST .. l_global_temp_tbl.LAST
17082 LOOP
17083 rec_count := rec_count + 1;
17084 cz_pb_mgr.g_ui_templates_old_temp_id_ref(rec_count) := l_global_temp_tbl(j);
17085 END LOOP;
17086 END IF;
17087 END LOOP;
17088 END IF;
17089
17090 IF (cz_pb_mgr.g_ui_templates_old_temp_id_ref.COUNT > 0)
17091 THEN
17092 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
17096 END LOOP;
17093 LOOP
17094 export_global_template(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i), cz_pb_mgr.v_publication_id);
17095 insert_tmp_pub(cz_pb_mgr.g_ui_templates_old_temp_id_ref(i));
17097 END IF;
17098
17099 COMMIT;
17100 EXCEPTION
17101 WHEN OTHERS
17102 THEN
17103 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17104 cz_pb_mgr.v_err_message := 'Fatal error occured during export of global template: ' || SQLERRM;
17105 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORTGLOBALTMP', SQLCODE);
17106 RAISE;
17107 END export_global_template;
17108
17109 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17110 -------- procedure to export the configuration models
17111 ---------from the development to the production server
17112 PROCEDURE proc_export(
17113 publicationid IN NUMBER
17114 ,modelid IN NUMBER
17115 ,serverid IN NUMBER
17116 ,x_status_code IN OUT NOCOPY cz_model_publications.export_status%TYPE
17117 ,p_copy_nonjradui IN BOOLEAN DEFAULT TRUE
17118 )
17119 IS
17120 CURSOR model_cur(rootmodelid NUMBER, serverid NUMBER, pubid NUMBER)
17121 IS
17122 SELECT model_id
17123 FROM cz_pb_model_exports
17124 WHERE root_model_id = rootmodelid AND server_id = serverid AND publication_id = pubid AND superseded_flag = 'N'
17125 ORDER BY export_reverse_seq DESC;
17126
17127 v_cursor NUMBER;
17128 v_model_id_table_exported model_id_table;
17129 v_model_id_table_not_exported model_id_table;
17130 v_model_count NUMBER := 1;
17131 v_validate_count NUMBER;
17132 mm_models_to_be_migrated cz_pb_mgr.t_ref;
17133
17134 l_expl_check_flag cz_db_settings.value%TYPE;
17135 l_run_id NUMBER := cz_pb_mgr.v_pb_run_id;
17136 l_msg_count NUMBER;
17137 l_msg_data VARCHAR2(32000);
17138 l_return_status VARCHAR2(16);
17139
17140 BEGIN
17141 v_next_sequence_gen.DELETE;
17142 v_sequence_count.DELETE;
17143
17144 ------retrieve seq incrementor from cz_db_settings
17145 IF (cz_pb_mgr.g_log_timing = publication_timing)
17146 THEN
17147 log_timing_message('start get_seq_incrementor');
17148 END IF;
17149
17150 get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
17151
17152 IF (cz_pb_mgr.g_log_timing = publication_timing)
17153 THEN
17154 log_timing_message('end get_seq_incrementor');
17155 END IF;
17156
17157 IF (cz_pb_mgr.g_log_timing = publication_timing)
17158 THEN
17159 log_timing_message('start get_models_tobe_exported');
17160 END IF;
17161
17162 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17163 THEN
17164 mm_models_to_be_migrated := get_rootmodel_and_mig_tgt_fldr(publicationid);
17165 mm_get_models_tobe_exported(mm_models_to_be_migrated);
17166 ELSIF(g_object_type = MODEL_PUBLICATION)
17167 THEN
17168 get_models_tobe_exported(modelid);
17169 ELSIF(g_object_type = template_publication)
17170 THEN
17171 cz_pb_mgr.v_models_to_be_exported.DELETE;
17172 cz_pb_mgr.v_models_to_be_exported(1) := modelid;
17173 END IF;
17174
17175 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
17176 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17177 LOOP
17178 mm_v_rootmodels_tobe_exported(i) := modelid;
17179 END LOOP;
17180 END IF;
17181
17182 IF (cz_pb_mgr.g_log_timing = publication_timing)
17183 THEN
17184 log_timing_message('end get_models_tobe_exported');
17185 log_timing_message('start create_export_request');
17186 END IF;
17187
17188 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17189 THEN
17190 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17191 LOOP
17192 create_export_request(cz_pb_mgr.mm_v_rootmodels_tobe_exported(i), cz_pb_mgr.v_models_to_be_exported(i), publicationid, serverid);
17193 END LOOP;
17194 ELSE
17195 cz_pb_mgr.v_err_message := 'No model / template data exported ';
17196 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:EXPREQ', SQLCODE);
17197 END IF;
17198
17199 -----create_copy_requests;
17200 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
17201 THEN
17202 cz_pb_mgr.v_models_to_be_exported.DELETE;
17203
17204 IF (cz_pb_mgr.g_log_timing = publication_timing)
17205 THEN
17206 log_timing_message('end create_export_request');
17207 log_timing_message('start model_cur ');
17208 END IF;
17209
17210 OPEN model_cur(modelid, serverid, publicationid);
17211
17212 LOOP
17213 FETCH model_cur
17214 INTO v_cursor;
17215
17216 EXIT WHEN model_cur%NOTFOUND;
17217 cz_pb_mgr.v_models_to_be_exported(v_model_count) := v_cursor;
17218 v_model_count := v_model_count + 1;
17219 END LOOP;
17220
17221 CLOSE model_cur;
17222
17223 IF (cz_pb_mgr.g_log_timing = publication_timing)
17224 THEN
17225 log_timing_message('end model_cur ');
17226 log_timing_message('start validate_schema');
17227 END IF;
17228
17229 v_validate_count := validate_schema(serverid);
17230
17234 END IF;
17231 IF (cz_pb_mgr.g_log_timing = publication_timing)
17232 THEN
17233 log_timing_message('end validate_schema');
17235
17236 IF ((v_validate_count = 1) AND(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR))
17237 THEN
17238 IF (cz_pb_mgr.g_log_timing = publication_timing)
17239 THEN
17240 log_timing_message('start load_data');
17241 END IF;
17242
17243 load_data(publicationid, modelid, serverid, x_status_code, p_copy_nonjradui);
17244
17245 IF (cz_pb_mgr.g_log_timing = publication_timing)
17246 THEN
17247 log_timing_message('end load_data');
17248 END IF;
17249 ELSE
17250 IF (v_validate_count <> 1)
17251 THEN
17252 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SCHEMA_COMPAT_ERR');
17253 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:VALSCH', SQLCODE);
17254 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17255 ELSE
17256 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17257 cz_pb_mgr.v_err_message := 'Process terminated for publication_id: ' || TO_CHAR(cz_pb_mgr.v_publication_id);
17258 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:PROCEXP', SQLCODE);
17259 END IF;
17260 END IF;
17261 ELSIF(g_object_type = template_publication)
17262 THEN
17263 export_global_template(modelid, publicationid);
17264 END IF;
17265
17266 -----upload publication data
17267 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model)
17268 THEN
17269 upload_publication_data(cz_pb_mgr.v_publication_id);
17270 END IF;
17271
17272 --Verify if the exported product structure and explosion data are in synch.
17273
17274 IF(cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)THEN
17275
17276 BEGIN
17277 SELECT DECODE(UPPER(value), 'Y', 'Y', 'YES', 'Y', '1', 'Y', 'ON', 'Y', 'N')
17278 INTO l_expl_check_flag FROM cz_db_settings
17279 WHERE UPPER(section_name) = 'PUBLICATION'
17280 AND UPPER(setting_id) = 'CheckExplosionStructure';
17281 EXCEPTION
17282 WHEN OTHERS THEN
17283 l_expl_check_flag := 'N';
17284 END;
17285
17286 IF(l_expl_check_flag = 'Y')THEN
17287
17288 EXECUTE IMMEDIATE 'BEGIN cz_diagnostics_pvt.verify_structure' || cz_pb_mgr.v_db_link || '(1.0, :1, ''0'', :2, :3, :4, :5); END;'
17289 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;
17290 END IF;
17291
17292 IF(l_return_status = FND_API.G_RET_STS_ERROR)THEN
17293
17294 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17295 cz_pb_mgr.v_err_message := l_msg_data;
17296 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message ,'cz_diagnostics_pvt', -1);
17297 END IF;
17298 END IF;
17299
17300 -----set status for concurrent manager
17301 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
17302 THEN
17303 cz_pb_mgr.global_export_retcode := 2;
17304 rollback_data(cz_pb_mgr.v_db_link);
17305 END IF;
17306
17307 -----clear tables
17308 clear_all_tables(cz_pb_mgr.v_status_code);
17309 EXCEPTION
17310 WHEN OTHERS
17311 THEN
17312 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
17313 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.EXPORT_FAILURE', SQLCODE);
17314 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17315 RAISE;
17316 END proc_export;
17317
17318 --------------------------------------------------------------------------------
17319 -- private: ret status: 0 yes, 2 no (msg_data - ui or err info, model_name - model info)
17320 PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER
17321 ,p_report_model_info IN NUMBER
17322 ,x_return_status OUT NOCOPY NUMBER
17323 ,x_msg_data OUT NOCOPY VARCHAR2
17324 ,x_model_name OUT NOCOPY VARCHAR2
17325 ,p_check_root_ui_only IN BOOLEAN DEFAULT FALSE
17326 )
17327 IS
17328 l_ui_style cz_ui_defs.ui_style%TYPE;
17329 l_ui_status cz_ui_defs.ui_status%TYPE;
17330 l_ui_tbl t_ref;
17331 l_ui_name cz_ui_defs.NAME%TYPE;
17332 l_root_model_id NUMBER;
17333 l_root_ui_last_update_date DATE;
17334 l_model_id NUMBER;
17335 l_model_name cz_devl_projects.NAME%TYPE;
17336 l_last_update_date DATE;
17337 l_last_struct_update DATE;
17338 l_suppress_refresh_flag cz_ui_defs.suppress_refresh_flag%TYPE;
17339 BEGIN
17340 x_return_status := 0;
17341 x_msg_data := '';
17342
17343 SELECT ui_style, ui_status, NAME, NVL(suppress_refresh_flag, '0'), devl_project_id, NVL(ui_timestamp_refresh, last_update_date)
17344 INTO l_ui_style, l_ui_status, l_ui_name, l_suppress_refresh_flag, l_root_model_id, l_root_ui_last_update_date
17345 FROM cz_ui_defs
17346 WHERE ui_def_id = p_ui_def_id;
17347
17348 IF l_ui_status = 'NEED_REFRESH' THEN
17349 x_return_status := 2;
17350 x_msg_data := l_ui_name;
17351
17352 IF p_report_model_info = 1 THEN
17353 SELECT NAME INTO x_model_name
17354 FROM cz_devl_projects
17358 RETURN;
17355 WHERE devl_project_id = l_root_model_id;
17356 END IF;
17357
17359 END IF;
17360
17361 IF p_check_root_ui_only THEN
17362 IF l_suppress_refresh_flag='0' THEN
17363 l_ui_tbl(1) := p_ui_def_id;
17364 END IF;
17365 ELSE
17366 IF (l_ui_style IN(g_ui_style_dhtml, g_ui_style_applet)) THEN
17367 SELECT DISTINCT ui_def_id BULK COLLECT INTO l_ui_tbl
17368 FROM cz_ui_nodes
17369 WHERE deleted_flag = '0'
17370 START WITH ui_def_id = p_ui_def_id
17371 CONNECT BY PRIOR ui_def_ref_id = ui_def_id AND PRIOR deleted_flag = '0';
17372 ELSIF (l_ui_style = g_ui_style_jrad) THEN
17373 SELECT ref_ui_def_id BULK COLLECT INTO l_ui_tbl
17374 FROM (SELECT DISTINCT ref_ui_def_id
17375 FROM cz_ui_refs
17376 START WITH ui_def_id = p_ui_def_id AND deleted_flag = '0'
17377 CONNECT BY PRIOR ref_ui_def_id = ui_def_id AND deleted_flag = '0' AND PRIOR deleted_flag = '0') uis
17378 WHERE EXISTS (SELECT NULL
17379 FROM cz_ui_defs
17380 WHERE ui_def_id = uis.ref_ui_def_id AND deleted_flag = '0' AND NVL(suppress_refresh_flag, '0') = '0');
17381
17382 IF l_suppress_refresh_flag = '0' THEN
17383 l_ui_tbl(l_ui_tbl.COUNT + 1) := p_ui_def_id;
17384 END IF;
17385 ELSIF l_ui_style = g_ui_style_custom THEN
17386 RETURN;
17387 ELSE
17388 x_return_status := 2;
17389 x_msg_data := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'UISTYLE', l_ui_style);
17390 RETURN;
17391 END IF;
17392 END IF;
17393
17394 IF (l_ui_tbl.COUNT > 0) THEN
17395 FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST
17396 LOOP
17397 IF l_ui_tbl(i) = p_ui_def_id THEN
17398 l_model_id := l_root_model_id;
17399 l_last_update_date := l_root_ui_last_update_date;
17400 ELSE
17401 BEGIN
17402 SELECT NVL(ui_timestamp_refresh, last_update_date), devl_project_id, NAME, ui_status
17403 INTO l_last_update_date, l_model_id, l_ui_name, l_ui_status
17404 FROM cz_ui_defs
17405 WHERE cz_ui_defs.ui_def_id = l_ui_tbl(i);
17406 EXCEPTION
17407 WHEN OTHERS THEN
17408 l_last_update_date := NULL;
17409 END;
17410
17411 IF l_last_update_date IS NULL OR l_ui_status = 'NEED_REFRESH' THEN
17412 x_return_status := 2;
17413 x_msg_data := l_ui_name;
17414
17415 IF p_report_model_info = 1 THEN
17416 SELECT NAME INTO x_model_name
17417 FROM cz_devl_projects
17418 WHERE devl_project_id = l_model_id;
17419 END IF;
17420
17421 EXIT;
17422 END IF;
17423 END IF;
17424
17425 BEGIN
17426 SELECT DECODE(l_ui_style, g_ui_style_jrad, NVL(ui_timestamp_struct_update, last_struct_update), last_struct_update), NAME
17427 INTO l_last_struct_update, l_model_name
17428 FROM cz_devl_projects
17429 WHERE cz_devl_projects.devl_project_id = l_model_id;
17430 EXCEPTION
17431 WHEN OTHERS THEN
17432 l_last_struct_update := NULL;
17433 l_model_name := NULL;
17434 END;
17435
17436 IF l_last_struct_update IS NULL OR l_last_update_date < l_last_struct_update THEN
17437 x_return_status := 2;
17438 x_msg_data := l_ui_name;
17439 x_model_name := l_model_name;
17440 EXIT;
17441 END IF;
17442 END LOOP;
17443 END IF;
17444 EXCEPTION
17445 WHEN OTHERS THEN
17446 x_return_status := 2;
17447 x_msg_data := SQLERRM;
17448 END is_ui_upto_date;
17449
17450 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17451 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
17452 -----------deep model copy
17453 -----------p_model_id : devl_project_id of the model for which a copy is to be made.
17454 -----------p_server_id: server_id from cz_servers that contains db info
17455 -----------p_folder: folder to which the copy is made
17456 -----------p_copy_rules: flag 1 implies copy rules else 0
17457 -----------p_copy_uis: flag 1 implies copy uis
17458 -----------p_copy_root: flag 1 implies that only root model would be copied
17459 -----------x_model_id : devl_project_id of the copied model
17460 PROCEDURE deep_model_copy(
17461 p_model_id IN NUMBER
17462 ,p_server_id IN NUMBER
17463 ,p_folder IN NUMBER
17464 ,p_copy_rules IN NUMBER
17465 ,p_copy_uis IN NUMBER
17466 ,p_copy_root IN NUMBER
17467 ,x_model_id OUT NOCOPY NUMBER
17468 ,x_run_id OUT NOCOPY NUMBER
17469 ,x_status OUT NOCOPY VARCHAR2
17470 )
17471 AS
17472 v_count PLS_INTEGER := 0;
17473 v_model_chk_count PLS_INTEGER := 0;
17474 v_ui_chk_count PLS_INTEGER := 0;
17475 v_folder_chk PLS_INTEGER := 0;
17476 v_rp_entries_name cz_rp_entries.NAME%TYPE;
17477 v_rp_entries_desc cz_rp_entries.description%TYPE;
17478 v_object_id cz_rp_entries.object_id%TYPE;
17479 v_copy_number NUMBER := 0.0;
17480 v_rp_orig_sys_ref VARCHAR2(255);
17481 v_imp_ps_node_count PLS_INTEGER := 0;
17482 v_pub_id cz_model_publications.publication_id%TYPE;
17483 l_msg_index NUMBER;
17484 failed_to_lock_model EXCEPTION;
17485 l_msg_data VARCHAR2(2000);
17486 l_msg_count NUMBER := 0;
17487 l_return_status VARCHAR2(1);
17488 l_lock_status VARCHAR2(1);
17489 l_locked_models cz_security_pvt.number_type_tbl;
17493 l_model_upto_date_msg VARCHAR2(2000);
17490 l_checkout_user cz_security_pvt.varchar_type_tbl;
17491 l_model_upto_date_status NUMBER;
17492 l_ui_upto_date_status NUMBER;
17494 logic_gen_required CONSTANT NUMBER := 1;
17495 ui_refresh_required CONSTANT NUMBER := 2;
17496 l_ui_tbl t_ref;
17497 l_ui_name VARCHAR2(1000);
17498 l_model_name VARCHAR2(1000);
17499 l_copy_nonjradui BOOLEAN;
17500 ui_not_uptodate EXCEPTION;
17501
17502 TYPE ui_style_tbl_type IS TABLE OF cz_ui_defs.ui_style%TYPE INDEX BY PLS_INTEGER;
17503 l_ui_style_tbl ui_style_tbl_type;
17504 BEGIN
17505 ----------delete session specific parameters
17506 BEGIN
17507 delete_session_parameters;
17508 EXCEPTION
17509 WHEN OTHERS
17510 THEN
17511 cz_pb_mgr.v_err_message := 'ERROR :deletion of session parameters ' || SQLERRM;
17512 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17513 END;
17514
17515 cz_pb_mgr.v_status_code := publication_ok;
17516
17517 ---------select run_id and user from dual
17518 ---------
17519 BEGIN
17520 SELECT USER, cz_xfr_run_infos_s.NEXTVAL
17521 INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
17522 FROM DUAL;
17523 EXCEPTION
17524 WHEN OTHERS
17525 THEN
17526 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
17527 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
17528 END;
17529
17530 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);
17531
17532 IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
17533 THEN
17534 l_msg_index := 1;
17535
17536 WHILE l_msg_count > 0
17537 LOOP
17538 l_msg_data := fnd_msg_pub.get(l_msg_index, fnd_api.g_false);
17539 cz_pb_mgr.error_msg_populate(l_msg_data, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
17540 l_msg_index := l_msg_index + 1;
17541 l_msg_count := l_msg_count - 1;
17542 END LOOP;
17543
17544 RAISE failed_to_lock_model;
17545 END IF;
17546
17547 --------initialize session parameters
17548 cz_pb_mgr.sequence_const := 0;
17549 cz_pb_mgr.v_status_code := 'OK';
17550 cz_pb_mgr.global_export_retcode := 0;
17551 cz_pb_mgr.g_object_type := 'PRJ';
17552
17553 IF (p_copy_rules = 1)
17554 THEN
17555 cz_pb_mgr.copy_rules := 'YES';
17556 ELSE
17557 cz_pb_mgr.copy_rules := 'NO';
17558 END IF;
17559
17560 IF (p_copy_uis = 1)
17561 THEN
17562 cz_pb_mgr.copy_uis := 'YES';
17563 ELSE
17564 cz_pb_mgr.copy_uis := 'NO';
17565 END IF;
17566
17567 IF (p_copy_root = 0)
17568 THEN
17569 cz_pb_mgr.copy_root_only := 'NO';
17570 ELSE
17571 cz_pb_mgr.copy_root_only := 'YES';
17572 END IF;
17573
17574 --------initialize model, ui and server values
17575 cz_pb_mgr.v_root_model_id := p_model_id;
17576
17577 --------get the ui_def_id for the above model
17578 IF (cz_pb_mgr.copy_uis = 'YES')
17579 THEN
17580 BEGIN
17581 SELECT MAX(ui_def_id)
17582 INTO cz_pb_mgr.v_root_ui_def_id
17583 FROM cz_ui_defs
17584 WHERE cz_ui_defs.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_ui_defs.deleted_flag = '0';
17585 EXCEPTION
17586 WHEN NO_DATA_FOUND
17587 THEN
17588 cz_pb_mgr.v_root_ui_def_id := -999;
17589 WHEN OTHERS
17590 THEN
17591 cz_pb_mgr.v_root_ui_def_id := -999;
17592 END;
17593 ELSE
17594 cz_pb_mgr.v_root_ui_def_id := -999;
17595 END IF;
17596
17597 cz_pb_mgr.v_server_id := p_server_id;
17598 -------set session level parameter that differentiates from publishing
17599 cz_pb_mgr.v_session_parameter := model_copy;
17600 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
17601 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
17602 ---------check if model exists
17603 v_model_chk_count := 0;
17604
17605 BEGIN
17606 SELECT 1, NVL(config_engine_type, 'L')
17607 INTO v_model_chk_count, g_engine_type
17608 FROM cz_devl_projects
17609 WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_root_model_id AND cz_devl_projects.deleted_flag = '0';
17610 EXCEPTION
17611 WHEN OTHERS
17612 THEN
17613 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
17614 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
17615 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17616 END;
17617
17618 ---------verify that ui exists
17619 v_ui_chk_count := -1;
17620
17621 IF (cz_pb_mgr.v_root_ui_def_id > 0)
17622 THEN
17623 BEGIN
17624 SELECT 1
17625 INTO v_ui_chk_count
17626 FROM cz_ui_defs
17627 WHERE cz_ui_defs.ui_def_id = cz_pb_mgr.v_root_ui_def_id AND cz_ui_defs.deleted_flag = '0';
17628 EXCEPTION
17629 WHEN OTHERS
17633 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17630 THEN
17631 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
17632 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17634 END;
17635 END IF;
17636
17637 -------check if UI is upto date
17638 IF cz_pb_mgr.copy_uis = 'YES' THEN
17639 l_copy_nonjradui := TRUE;
17640 IF cz_pb_mgr.copy_root_only = 'YES' THEN
17641 SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
17642 FROM cz_ui_defs
17643 WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id=p_model_id;
17644 ELSE
17645 SELECT ui_def_id, ui_style BULK COLLECT INTO l_ui_tbl, l_ui_style_tbl
17646 FROM cz_ui_defs
17647 WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
17648 (SELECT component_id FROM cz_model_ref_expls
17649 WHERE deleted_flag='0' AND model_id=p_model_id);
17650 END IF;
17651
17652 IF l_ui_tbl.COUNT>0 THEN
17653 FOR i IN l_ui_tbl.FIRST .. l_ui_tbl.LAST LOOP
17654 -- all jrad uis have to be up to date
17655 -- all nonjrad uis will be not copied if any such ui is not up to date
17656 IF l_ui_style_tbl(i) = oa_ui_style OR l_copy_nonjradui THEN
17657 is_ui_upto_date(p_ui_def_id => l_ui_tbl(i)
17658 ,p_report_model_info => 1
17659 ,x_return_status => l_ui_upto_date_status
17660 ,x_msg_data => l_ui_name
17661 ,x_model_name => l_model_name
17662 ,p_check_root_ui_only=> TRUE
17663 );
17664 IF l_ui_upto_date_status IS NOT NULL AND l_ui_upto_date_status <> 0 THEN
17665 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'UI' ||
17666 ' ''' || l_ui_name || '''', 'MODELID', '''' || l_model_name || '''');
17667 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', -20001);
17668 IF l_ui_style_tbl(i) = oa_ui_style THEN
17669 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17670 RAISE ui_not_uptodate;
17671 ELSE
17672 l_copy_nonjradui := FALSE;
17673 END IF;
17674 END IF;
17675 END IF;
17676 END LOOP;
17677 END IF;
17678 END IF;
17679
17680 -- if no ui to copy or not to copy ui
17681 IF l_ui_upto_date_status IS NULL THEN
17682 l_ui_upto_date_status := 0;
17683 END IF;
17684
17685 --------check if folder exists
17686 IF (p_folder IS NOT NULL)
17687 THEN
17688 BEGIN
17689 SELECT 1
17690 INTO v_folder_chk
17691 FROM cz_rp_entries
17692 WHERE object_type = 'FLD' AND object_id = p_folder AND deleted_flag = '0';
17693 EXCEPTION
17694 WHEN OTHERS
17695 THEN
17696 cz_pb_mgr.v_err_message := 'Error in retrieving folder id : ' || p_folder || ' : ' || SQLERRM;
17697 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17698 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17699 END;
17700 END IF;
17701
17702 IF (v_model_chk_count = 0)
17703 THEN
17704 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL');
17705 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17706 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17707 ELSIF(v_ui_chk_count = 0)
17708 THEN
17709 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI');
17710 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17711 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17712 ELSE
17713 -----------create a dummy publication
17714 BEGIN
17715 SELECT cz_model_publications_s.NEXTVAL
17716 INTO cz_pb_mgr.v_publication_id
17717 FROM DUAL;
17718
17719 v_pub_id := cz_pb_mgr.v_publication_id;
17720 EXCEPTION
17721 WHEN OTHERS
17722 THEN
17723 cz_pb_mgr.v_err_message := 'Error in generation of dummy publication id';
17724 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17725 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17726 END;
17727
17728 BEGIN
17729 INSERT INTO cz_model_publications
17730 (publication_id, model_id, server_id, product_key, publication_mode
17731 ,ui_def_id, ui_style, applicable_from, applicable_until, deleted_flag, model_last_struct_update, model_last_logic_update
17732 ,model_last_updated, source_target_flag, object_id, object_type, disabled_flag
17733 )
17734 VALUES (cz_pb_mgr.v_publication_id, cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_server_id, 'copy model', 'T'
17735 ,cz_pb_mgr.v_root_ui_def_id, '0', SYSDATE, SYSDATE, '0', SYSDATE, SYSDATE
17736 ,SYSDATE, g_target_flag, cz_pb_mgr.v_root_model_id, 'PRJ', '0'
17737 );
17738
17739 COMMIT;
17740 EXCEPTION
17744 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17741 WHEN OTHERS
17742 THEN
17743 cz_pb_mgr.v_err_message := 'Error in creation of dummy publication record: ' || SQLERRM;
17745 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17746 END;
17747
17748 BEGIN
17749 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,
17750 (cz_pb_mgr.copy_uis='YES' AND l_copy_nonjradui));
17751
17752 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
17753 THEN
17754 cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || ' successfully copied';
17755 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17756 ELSE
17757 cz_pb_mgr.v_err_message := 'MODEL: ' || cz_pb_mgr.v_root_model_id || ' copy failed';
17758 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17759 END IF;
17760
17761 COMMIT;
17762 EXCEPTION
17763 WHEN OTHERS
17764 THEN
17765 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EXPORT_FAILURE', 'SQLERRM', SQLERRM);
17766 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17767 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17768 END;
17769
17770 ----------insert into cz_rp_entries
17771 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
17772 THEN
17773 v_imp_ps_node_count := 0;
17774
17775 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
17776 LOOP
17777 v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
17778 cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
17779 cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
17780
17781 BEGIN
17782 SELECT remote_model_id
17783 INTO v_object_id
17784 FROM cz_pb_model_exports
17785 WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
17786 AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
17787 EXCEPTION
17788 WHEN OTHERS
17789 THEN
17790 cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
17791 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17792 END;
17793
17794 BEGIN
17795 SELECT desc_text, orig_sys_ref
17796 INTO v_rp_entries_desc, v_rp_orig_sys_ref
17797 FROM cz_devl_projects
17798 WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
17799 EXCEPTION
17800 WHEN NO_DATA_FOUND
17801 THEN
17802 v_rp_orig_sys_ref := NULL;
17803 cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
17804 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17805 WHEN OTHERS
17806 THEN
17807 v_rp_orig_sys_ref := NULL;
17808 cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
17809 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17810 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17811 END;
17812
17813 v_rp_entries_name := copy_name(cz_pb_mgr.v_models_to_be_exported(i));
17814
17815 IF (v_rp_entries_name = 'ERROR')
17816 THEN
17817 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17818 END IF;
17819
17820 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
17821 THEN
17822 cz_pb_mgr.v_new_object_id := v_object_id;
17823
17824 BEGIN
17825 cz_pb_mgr.v_rp_folder_id := p_folder;
17826 cz_pb_mgr.v_rp_name := v_rp_entries_name;
17827 cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
17828
17829 EXECUTE IMMEDIATE 'BEGIN'
17830 || ' '
17831 || 'insert into cz_rp_entries'
17832 || cz_pb_mgr.v_db_link
17833 || ' ( OBJECT_TYPE'
17834 || ' '
17835 || ',OBJECT_ID'
17836 || ' '
17837 || ',ENCLOSING_FOLDER'
17838 || ' '
17839 || ',NAME'
17840 || ' '
17841 || ',DESCRIPTION'
17842 || ' '
17843 || ',DELETED_FLAG'
17844 || ' '
17848 || ' '
17845 || ',SEEDED_FLAG'
17846 || ' '
17847 || ')'
17849 || 'VALUES ( ''PRJ'''
17850 || ' '
17851 || ',cz_pb_mgr.v_new_object_id'
17852 || ' '
17853 || ',cz_pb_mgr.v_rp_folder_id'
17854 || ' '
17855 || ',cz_pb_mgr.v_rp_name'
17856 || ' '
17857 || ',cz_pb_mgr.v_rp_desc'
17858 || ' '
17859 || ',''0'''
17860 || ' '
17861 || ',''0'');'
17862 || ' '
17863 || 'commit;'
17864 || ' '
17865 || 'END;';
17866 EXCEPTION
17867 WHEN OTHERS
17868 THEN
17869 cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
17870 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17871 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17872 END;
17873
17874 --------update proj name in devl projects with the new name
17875 ----------check if source model is upto date
17876 l_model_upto_date_msg := NULL;
17877 l_model_upto_date_status := 0;
17878 is_model_upto_date(cz_pb_mgr.v_models_to_be_exported(i), l_model_upto_date_status, l_model_upto_date_msg);
17879
17880 BEGIN
17881 IF (cz_pb_mgr.v_rp_name IS NOT NULL)
17882 THEN
17883 IF ((l_model_upto_date_status = 0) AND(l_ui_upto_date_status = 0))
17884 THEN
17885 EXECUTE IMMEDIATE 'BEGIN'
17886 || ' '
17887 || 'UPDATE cz_devl_projects'
17888 || cz_pb_mgr.v_db_link
17889 || ' t'
17890 || ' '
17891 || 'SET t.name = cz_pb_mgr.v_rp_name'
17892 || ' '
17893 || 'WHERE t.devl_project_id = '
17894 || cz_pb_mgr.v_new_object_id
17895 || ';'
17896 || ' '
17897 || 'END;';
17898 ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = ui_refresh_required))
17899 THEN
17900 EXECUTE IMMEDIATE 'BEGIN'
17901 || ' '
17902 || 'UPDATE cz_devl_projects'
17903 || cz_pb_mgr.v_db_link
17904 || ' t'
17905 || ' '
17906 || 'SET t.name = cz_pb_mgr.v_rp_name,'
17907 || ' '
17908 || 't.last_logic_update = sysdate,'
17909 || ' '
17910 || 't.last_struct_update = sysdate'
17911 || ' '
17912 || 'WHERE t.devl_project_id = '
17913 || cz_pb_mgr.v_new_object_id
17914 || ';'
17915 || ' '
17916 || 'END;';
17917 ELSIF((l_model_upto_date_status = logic_gen_required) AND(l_ui_upto_date_status = 0))
17918 THEN
17919 EXECUTE IMMEDIATE 'BEGIN'
17920 || ' '
17921 || 'UPDATE cz_devl_projects'
17922 || cz_pb_mgr.v_db_link
17923 || ' t'
17924 || ' '
17925 || 'SET t.name = cz_pb_mgr.v_rp_name,'
17926 || ' '
17927 || 't.last_logic_update = sysdate'
17928 || ' '
17929 || 'WHERE t.devl_project_id = '
17930 || cz_pb_mgr.v_new_object_id
17931 || ';'
17932 || ' '
17933 || 'END;';
17934 ELSE
17935 EXECUTE IMMEDIATE 'BEGIN'
17936 || ' '
17937 || 'UPDATE cz_devl_projects'
17941 || 'SET t.name = cz_pb_mgr.v_rp_name,'
17938 || cz_pb_mgr.v_db_link
17939 || ' t'
17940 || ' '
17942 || ' '
17943 || 't.last_struct_update = sysdate'
17944 || ' '
17945 || 'WHERE t.devl_project_id = '
17946 || cz_pb_mgr.v_new_object_id
17947 || ';'
17948 || ' '
17949 || 'END;';
17950 END IF;
17951 END IF;
17952
17953 COMMIT;
17954 EXCEPTION
17955 WHEN OTHERS
17956 THEN
17957 cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
17958 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17959 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17960 END;
17961
17962 BEGIN
17963
17964 EXECUTE IMMEDIATE ' INSERT INTO CZ_PERSISTENT_REC_IDS'
17965 ||' (devl_project_id,MAX_PERSISTENT_REC_ID,'
17966 ||' deleted_flag) '
17967 ||' SELECT :1,m.max_persistent_rec_id,0 from '
17968 ||' cz_devl_projects p,'
17969 ||' CZ_PERSISTENT_REC_IDS m '
17970 ||' where p.devl_project_id=:2'
17971 ||' and m.devl_project_id=p.devl_project_id '
17972 ||' and p.deleted_flag=0 '
17973 ||' and p.POST_MIGR_CHANGE_FLAG is not null and p.POST_MIGR_CHANGE_FLAG<>''L'''
17974 USING cz_pb_mgr.v_new_object_id, cz_pb_mgr.v_models_to_be_exported(i);
17975
17976 EXCEPTION
17977 WHEN OTHERS
17978 THEN
17979 cz_pb_mgr.v_err_message := 'Error in inserting records into CZ_PERSISTENT_REC_IDS: ' || SQLERRM;
17980 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
17981 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
17982 END;
17983
17984 ------insert into cz_xfr_project_bills
17985 IF (v_rp_orig_sys_ref IS NOT NULL)
17986 THEN
17987 BEGIN
17988 EXECUTE IMMEDIATE 'BEGIN'
17989 || ' '
17990 || 'insert into cz_xfr_project_bills'
17991 || cz_pb_mgr.v_db_link
17992 || ' ('
17993 || ' '
17994 || 'MODEL_PS_NODE_ID'
17995 || ' '
17996 || ',ORGANIZATION_ID'
17997 || ' '
17998 || ',COMPONENT_ITEM_ID'
17999 || ' '
18000 || ',DESCRIPTION'
18001 || ' '
18002 || ',LAST_IMPORT_RUN_ID'
18003 || ' '
18004 || ',LAST_IMPORT_DATE'
18005 || ' '
18006 || ',SOURCE_BILL_DELETED'
18007 || ' '
18008 || ',TOP_ITEM_ID'
18009 || ' '
18010 || ',DELETED_FLAG'
18011 || ' '
18012 || ',EXPLOSION_TYPE'
18013 || ' '
18014 || ',BILL_REVISION_DATE'
18015 || ' '
18016 || ',EFF_FROM'
18017 || ' '
18018 || ',EFF_TO'
18019 || ' '
18020 || ',SOURCE_SERVER'
18021 || ' '
18022 || ',COPY_ADDL_CHILD_MODELS'
18023 || ' '
18024 || ')'
18025 || ' '
18026 || 'SELECT cz_pb_mgr.v_new_object_id'
18027 || ' '
18028 || ',ORGANIZATION_ID'
18029 || ' '
18030 || ',COMPONENT_ITEM_ID'
18031 || ' '
18032 || ',DESCRIPTION'
18033 || ' '
18034 || ',LAST_IMPORT_RUN_ID'
18035 || ' '
18036 || ',LAST_IMPORT_DATE'
18040 || ',TOP_ITEM_ID'
18037 || ' '
18038 || ',SOURCE_BILL_DELETED'
18039 || ' '
18041 || ' '
18042 || ',DELETED_FLAG'
18043 || ' '
18044 || ',EXPLOSION_TYPE'
18045 || ' '
18046 || ',BILL_REVISION_DATE'
18047 || ' '
18048 || ',EFF_FROM'
18049 || ' '
18050 || ',EFF_TO'
18051 || ' '
18052 || ',SOURCE_SERVER'
18053 || ' '
18054 || ',COPY_ADDL_CHILD_MODELS'
18055 || ' '
18056 || 'FROM cz_xfr_project_bills'
18057 || ' '
18058 || 'WHERE cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
18059 || ' '
18060 || 'AND cz_xfr_project_bills.deleted_flag = ''0'';'
18061 || ' '
18062 || 'commit;'
18063 || ' '
18064 || 'END;';
18065 EXCEPTION
18066 WHEN NO_DATA_FOUND
18067 THEN
18068 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
18069 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18070 WHEN OTHERS
18071 THEN
18072 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
18073 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18074 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18075 END;
18076 END IF;
18077 END IF;
18078 END LOOP;
18079 END IF;
18080
18081 x_run_id := cz_pb_mgr.v_pb_run_id;
18082 x_status := cz_pb_mgr.v_status_code;
18083 log_pb_trace;
18084 delete_session_parameters;
18085
18086 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR)
18087 THEN
18088 rollback_data(cz_pb_mgr.v_db_link);
18089 x_model_id := -999;
18090
18091 IF (cz_pb_mgr.v_imported_ps_ref.COUNT > 0)
18092 THEN
18093 EXECUTE IMMEDIATE 'BEGIN'
18094 || ' '
18095 || 'FOR I IN cz_pb_mgr.v_imported_ps_ref.FISRT..cz_pb_mgr.v_imported_ps_ref.LAST'
18096 || ' '
18097 || 'LOOP'
18098 || ' '
18099 || 'DELETE FROM cz_rp_entries'
18100 || cz_pb_mgr.v_db_link
18101 || ' t'
18102 || ' '
18103 || 'WHERE t.object_id = cz_pb_mgr.v_imported_ps_ref(i)'
18104 || ' '
18105 || 'AND t.object_type = ''PRJ'';'
18106 || ' '
18107 || 'END;';
18108 END IF;
18109 ELSE
18110 x_model_id := v_object_id;
18111 END IF;
18112
18113 ----------delete dummy publication record
18114 DELETE FROM cz_model_publications
18115 WHERE publication_id = v_pub_id;
18116
18117 DELETE FROM cz_model_publications
18118 WHERE remote_publication_id = v_pub_id;
18119
18120 DELETE FROM cz_pb_model_exports
18121 WHERE publication_id = v_pub_id;
18122 END IF;
18123
18124 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18125
18126 IF (l_lock_status <> FND_API.G_RET_STS_SUCCESS)
18127 THEN
18128 l_msg_index := 1;
18129
18130 WHILE l_msg_count > 0
18131 LOOP
18132 cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
18133 l_msg_index := l_msg_index + 1;
18134 l_msg_count := l_msg_count - 1;
18135 END LOOP;
18136 END IF;
18137
18138 COMMIT;
18139 EXCEPTION
18140 WHEN failed_to_lock_model
18141 THEN
18142 x_run_id := cz_pb_mgr.v_pb_run_id;
18143 x_status := PUBLICATION_ERROR;
18144 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18145 log_pb_trace;
18146 WHEN ui_not_uptodate THEN
18147 x_run_id := cz_pb_mgr.v_pb_run_id;
18148 x_status := PUBLICATION_ERROR;
18149 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18150 log_pb_trace;
18154 cz_pb_mgr.v_err_message := 'Fatal error during deep model copy of model: ' || cz_pb_mgr.v_root_model_id;
18151 WHEN OTHERS
18152 THEN
18153 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
18155 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODELCOPY', SQLCODE);
18156 END;
18157
18158 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18159 -----signature of deep model copy that developer would call
18160 ----
18161 PROCEDURE deep_model_copy(
18162 p_model_id IN NUMBER
18163 ,p_server_id IN NUMBER
18164 ,p_folder IN NUMBER
18165 ,p_copy_rules IN NUMBER
18166 ,p_copy_uis IN NUMBER
18167 ,p_copy_root IN NUMBER
18168 ,x_return_status OUT NOCOPY VARCHAR2
18169 ,x_msg_count OUT NOCOPY NUMBER
18170 ,x_msg_data OUT NOCOPY VARCHAR2
18171 ,p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_TRUE
18172 )
18173 IS
18174 TYPE message_tbl_type IS TABLE OF VARCHAR2(2000)
18175 INDEX BY BINARY_INTEGER;
18176
18177 l_model_id cz_devl_projects.devl_project_id%TYPE;
18178 l_run_id NUMBER;
18179 l_status VARCHAR2(2000);
18180 l_message_tbl message_tbl_type;
18181 l_instr NUMBER := 0;
18182 BEGIN
18183
18184 --initialize the message stack depending on the input parameter
18185 IF (p_init_msg_list = FND_API.G_TRUE) THEN
18186 fnd_msg_pub.initialize;
18187 END IF;
18188
18189 x_return_status := FND_API.G_RET_STS_SUCCESS;
18190 x_msg_count := 0;
18191 x_msg_data := '';
18192 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);
18193
18194 IF (l_status = PUBLICATION_ERROR)
18195 THEN
18196 x_return_status := FND_API.G_RET_STS_ERROR;
18197 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
18198 END IF;
18199 END deep_model_copy;
18200
18201 ------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18202 ------------procedure to publish all models
18203 PROCEDURE publish_all_models
18204 AS
18205
18206 CURSOR tobepublished_cur
18207 IS
18208 SELECT publication_id
18209 FROM cz_model_publications
18210 WHERE cz_model_publications.deleted_flag = record_not_deleted
18211 AND cz_model_publications.export_status = publication_pending
18212 AND UPPER(object_type) = model_publication
18213 ORDER BY publication_id;
18214
18215 v_tobepublished cz_model_publications.publication_id%TYPE;
18216 v_run_id cz_db_logs.run_id%TYPE;
18217 v_pb_status cz_model_publications.export_status%TYPE;
18218 BEGIN
18219
18220 OPEN tobepublished_cur;
18221
18222 LOOP
18223 FETCH tobepublished_cur
18224 INTO v_tobepublished;
18225
18226 EXIT WHEN tobepublished_cur%NOTFOUND;
18227 publish_model(v_tobepublished, v_run_id, v_pb_status);
18228 END LOOP;
18229
18230 CLOSE tobepublished_cur;
18231 EXCEPTION
18232 WHEN OTHERS
18233 THEN
18234 CLOSE tobepublished_cur;
18235
18236 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_GEN_ERROR', 'TOBEPUBLISHED', v_tobepublished, 'SQLERRM', SQLERRM);
18237 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_ALL_MODELS', SQLCODE);
18238 END publish_all_models;
18239
18240 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18241 -----initialize pb parameters
18242 PROCEDURE initialize_pb_parameters(p_publication_id IN cz_model_publications.publication_id%TYPE)
18243 AS
18244 l_log_pb_time cz_db_settings.VALUE%TYPE;
18245 l_pub_mode cz_model_publications.publication_mode%TYPE;
18246 BEGIN
18247 fnd_msg_pub.initialize;
18248 cz_pb_mgr.v_publication_id := p_publication_id;
18249 cz_pb_mgr.sequence_const := 0;
18250 cz_pb_mgr.v_ui_str := 'x';
18251 cz_pb_mgr.global_export_retcode := 0;
18252 cz_pb_mgr.v_pb_run_id := 0.0;
18253 cz_pb_mgr.bomsynch_flag := 'N';
18254 cz_pb_mgr.v_status_code := publication_ok;
18255 cz_pb_mgr.v_session_parameter := pub_model;
18256 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
18257 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
18258 cz_pb_mgr.v_cz_model_pub_old_id := p_publication_id;
18259 cz_pb_mgr.v_cz_model_pub_new_id := NULL;
18260 cz_pb_mgr.v_ui_name := NULL;
18261 cz_pb_mgr.v_sql_err_msg := 'Fatal error reported';
18262 v_refresh_rules := 'NO';
18263
18264 SELECT publication_mode
18265 INTO l_pub_mode
18266 FROM cz_model_publications
18267 WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted;
18268
18269 IF (UPPER(l_pub_mode) = cz_model_migration_pvt.mode_migration)
18270 THEN
18271 cz_pb_mgr.v_session_parameter := cz_model_migration_pvt.migrate_model;
18272 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
18273 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
18274 END IF;
18275
18276 ---------select run_id and user from dual
18277 BEGIN
18278 SELECT USER, cz_xfr_run_infos_s.NEXTVAL
18279 INTO cz_pb_mgr.loguser, cz_pb_mgr.v_pb_run_id
18280 FROM DUAL;
18281 EXCEPTION
18282 WHEN OTHERS
18283 THEN
18287 -------select setting for logging
18284 RAISE run_id_error;
18285 END;
18286
18288 BEGIN
18289 SELECT VALUE
18290 INTO cz_pb_mgr.v_pb_log_flag
18291 FROM cz_db_settings
18292 WHERE cz_db_settings.setting_id = publication_log;
18293 EXCEPTION
18294 WHEN OTHERS
18295 THEN
18296 cz_pb_mgr.v_pb_log_flag := 'NO';
18297 END;
18298
18299 -------select setting for logging publication times
18300 BEGIN
18301 SELECT VALUE
18302 INTO l_log_pb_time
18303 FROM cz_db_settings
18304 WHERE cz_db_settings.setting_id = pb_timing_log;
18305
18306 IF (l_log_pb_time = 'YES')
18307 THEN
18308 cz_pb_mgr.g_log_timing := publication_timing;
18309 END IF;
18310 EXCEPTION
18311 WHEN OTHERS
18312 THEN
18313 cz_pb_mgr.g_log_timing := 1;
18314 END;
18315 EXCEPTION
18316 WHEN run_id_error
18317 THEN
18318 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_SEQ_XFR');
18319 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.XFRINFO', SQLCODE);
18320 WHEN OTHERS
18321 THEN
18322 RAISE;
18323 END initialize_pb_parameters;
18324
18325 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18326 PROCEDURE check_ui_template_exist(p_template_id IN NUMBER, x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE)
18327 IS
18328 l_count NUMBER := 0;
18329 BEGIN
18330 SELECT 1
18331 INTO l_count
18332 FROM cz_ui_templates
18333 WHERE cz_ui_templates.template_id = p_template_id
18334 AND cz_ui_templates.ui_def_id = 0
18335 AND cz_ui_templates.deleted_flag = record_not_deleted
18336 AND ROWNUM < 2;
18337 EXCEPTION
18338 WHEN NO_DATA_FOUND
18339 THEN
18340 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_GLOBAL_TMPL', 'PUBID', cz_pb_mgr.v_publication_id);
18341 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18342 x_status := PUBLICATION_ERROR;
18343 END check_ui_template_exist;
18344
18345 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18346 --------procedure that checks if model and ui specified in the request exist
18347 --------@p_publication_id : publication id of the request
18348 --------@p_model_id : model id of the pb request
18349 --------@p_ui_def_id : ui_def_id of the request
18350 --------@x_status : publication status parameter
18351 PROCEDURE check_model_ui_exist(
18352 p_publication_id IN cz_model_publications.publication_id%TYPE
18353 ,p_model_id IN cz_model_publications.model_id%TYPE
18354 ,p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
18355 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
18356 )
18357 AS
18358 v_model_chk_count NUMBER := 0.0;
18359 v_ui_chk_count NUMBER := 0.0;
18360 BEGIN
18361 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18362 THEN
18363 SELECT COUNT(*)
18364 INTO v_model_chk_count
18365 FROM cz_devl_projects
18366 WHERE cz_devl_projects.devl_project_id = p_model_id AND cz_devl_projects.deleted_flag = record_not_deleted;
18367
18368 IF (v_model_chk_count = 0)
18369 THEN
18370 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_MODEL', 'PUBID', p_publication_id);
18371 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18372 x_status := PUBLICATION_ERROR;
18373 END IF;
18374
18375 v_ui_chk_count := -1;
18376
18377 IF ((p_ui_def_id IS NOT NULL) AND(p_ui_def_id > 0))
18378 THEN
18379 SELECT COUNT(*)
18380 INTO v_ui_chk_count
18381 FROM cz_ui_defs
18382 WHERE cz_ui_defs.ui_def_id = p_ui_def_id AND cz_ui_defs.deleted_flag = record_not_deleted;
18383
18384 IF (v_ui_chk_count = 0)
18385 THEN
18386 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_NO_UI', 'PUBID', p_publication_id);
18387 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18388 x_status := PUBLICATION_ERROR;
18389 END IF;
18390 END IF;
18391
18392 IF ((v_model_chk_count = 0) OR(v_ui_chk_count = 0))
18393 THEN
18394 update_publication_status(p_publication_id, PUBLICATION_ERROR, empty_string);
18395 END IF;
18396 END IF;
18397 EXCEPTION
18398 WHEN OTHERS
18399 THEN
18400 x_status := PUBLICATION_ERROR;
18401 RAISE;
18402 END check_model_ui_exist;
18403
18404 ------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18405 -------procedure that gets the target ui def id in case no new copy is made
18406 PROCEDURE get_tgt_ui_def(
18407 p_ui_def_id IN cz_model_publications.ui_def_id%TYPE
18408 ,p_prev_rem_publication_id IN cz_model_publications.publication_id%TYPE
18409 ,x_rem_model_id IN OUT NOCOPY cz_model_publications.model_id%TYPE
18410 ,x_rem_ui_def_id IN OUT NOCOPY cz_model_publications.ui_def_id%TYPE
18411 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
18412 )
18413 AS
18414 v_ui_name cz_ui_defs.NAME%TYPE;
18415 v_old_remote_model cz_model_publications.model_id%TYPE;
18416 ui_cv ref_cursor;
18417 BEGIN
18421 FROM cz_ui_defs
18418 BEGIN
18419 SELECT NAME
18420 INTO v_ui_name
18422 WHERE ui_def_id = p_ui_def_id;
18423 EXCEPTION
18424 WHEN OTHERS
18425 THEN
18426 v_ui_name := NULL;
18427 END;
18428
18429 BEGIN
18430 get_remote_model_id(cz_pb_mgr.v_server_id,cz_pb_mgr.v_root_model_id,x_status,v_old_remote_model);
18431 EXCEPTION
18432 WHEN OTHERS
18433 THEN
18434 RAISE;
18435 END;
18436
18437 x_rem_model_id := v_old_remote_model;
18438
18439 IF (v_ui_name IS NOT NULL)
18440 THEN
18441 OPEN ui_cv FOR 'SELECT ui_def_id FROM cz_ui_defs'
18442 || cz_pb_mgr.v_db_link
18443 || ' '
18444 || 'WHERE name = :1'
18445 || ' '
18446 || 'AND deleted_flag = ''0'' AND devl_project_id = :2' USING v_ui_name, v_old_remote_model;
18447
18448 LOOP
18449 FETCH ui_cv
18450 INTO x_rem_ui_def_id;
18451
18452 EXIT WHEN ui_cv%NOTFOUND;
18453 END LOOP;
18454
18455 CLOSE ui_cv;
18456 END IF;
18457 EXCEPTION
18458 WHEN OTHERS
18459 THEN
18460 CLOSE ui_cv;
18461
18462 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;
18463 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.GETTGTUIDEF', SQLCODE);
18464 x_status := PUBLICATION_ERROR;
18465 RAISE;
18466 END get_tgt_ui_def;
18467
18468 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18469 -----procedure that checks the export status of the existing request
18470 -----Only requests with a status of PEN can be published
18471 PROCEDURE check_export_status(
18472 p_export_status IN cz_model_publications.export_status%TYPE
18473 ,p_pb_flag IN VARCHAR2
18474 ,x_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
18475 )
18476 AS
18477 BEGIN
18478 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
18479 THEN
18480 IF (p_pb_flag = cz_publish)
18481 THEN
18482 IF ((p_export_status = 'PUP') OR(p_export_status = 'ERR') OR(p_export_status = 'PRC') OR(p_export_status = 'OK'))
18483 THEN
18484 cz_pb_mgr.v_err_message :=
18485 cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
18486 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18487 cz_pb_mgr.v_err_message := 'Publication with a status PRC/PUP/ERR may not be published';
18488 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18489 x_status := PUBLICATION_ERROR;
18490 END IF;
18491 ELSIF(p_pb_flag = cz_republish)
18492 THEN
18493 IF (p_export_status <> 'OK')
18494 THEN
18495 x_status := PUBLICATION_ERROR;
18496 cz_pb_mgr.v_err_message :=
18497 cz_utils.get_text('CZ_REPUB_STATUS_CHK', 'PUBID', cz_pb_mgr.v_publication_id, 'SQLERRM', 'Export status check failed');
18498 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISHMODEL', SQLCODE);
18499 END IF;
18500 END IF;
18501 END IF;
18502 EXCEPTION
18503 WHEN OTHERS
18504 THEN
18505 cz_pb_mgr.v_err_message := 'Error in check pb status: ' || SQLERRM;
18506 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISHMODEL', SQLCODE);
18507 x_status := PUBLICATION_ERROR;
18508 END check_export_status;
18509
18510 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18511 PROCEDURE is_ui_upto_date(p_ui_def_id IN NUMBER, x_return_status OUT NOCOPY NUMBER, x_msg_data OUT NOCOPY VARCHAR2)
18512 IS
18513 l_model_name cz_devl_projects.NAME%TYPE;
18514 BEGIN
18515 IF p_ui_def_id IS NOT NULL
18516 THEN
18517 is_ui_upto_date(p_ui_def_id, 0, x_return_status, x_msg_data, l_model_name);
18518 END IF;
18519 END is_ui_upto_date;
18520
18521 FUNCTION is_ui_upto_date(p_ui_def_id IN NUMBER)
18522 RETURN VARCHAR2
18523 IS
18524 l_return_status VARCHAR2(255);
18525 l_msg_data VARCHAR2(32000);
18526 BEGIN
18527 is_ui_upto_date(p_ui_def_id, l_return_status, l_msg_data);
18528
18529 IF l_return_status = 2
18530 THEN
18531 RETURN '1';
18532 ELSE
18533 RETURN '0';
18534 END IF;
18535 END is_ui_upto_date;
18536
18537 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18538 -- return status: 0 yes, 1 no
18539 -- directly called by developer
18540 PROCEDURE is_model_upto_date(p_model_id IN NUMBER, x_return_status IN OUT NOCOPY NUMBER, x_msg_data IN OUT NOCOPY VARCHAR2)
18541 IS
18542 l_component_id cz_model_ref_expls.component_id%TYPE;
18543 l_model_name cz_devl_projects.NAME%TYPE;
18544 l_root_model_name cz_devl_projects.NAME%TYPE;
18545 l_prj_last_logic_update cz_devl_projects.last_logic_update%TYPE;
18546 l_prj_last_struct_update cz_devl_projects.last_struct_update%TYPE;
18550 l_is_solver_model BOOLEAN;
18547 l_logic_last_update_date cz_lce_headers.last_update_date%TYPE;
18548 l_root_logic_last_update_date cz_lce_headers.last_update_date%TYPE;
18549 l_engine_type cz_devl_projects.config_engine_type%TYPE;
18551
18552 CURSOR model_cur(in_root_model NUMBER) IS
18553 SELECT DISTINCT component_id
18554 FROM cz_model_ref_expls
18555 WHERE deleted_flag = '0' AND model_id = in_root_model AND ps_node_type = 263;
18556 BEGIN
18557 fnd_msg_pub.initialize;
18558
18559 IF p_model_id IS NOT NULL THEN
18560 x_return_status := 0;
18561 x_msg_data := '';
18562
18563 BEGIN
18564 SELECT last_logic_update, config_engine_type, NAME
18565 INTO l_prj_last_logic_update, l_engine_type, l_root_model_name
18566 FROM cz_devl_projects
18567 WHERE devl_project_id = p_model_id AND deleted_flag = '0';
18568 EXCEPTION
18569 WHEN NO_DATA_FOUND THEN
18570 RAISE;
18571 END;
18572
18573 l_is_solver_model := (l_engine_type IS NOT NULL AND l_engine_type = ENGINE_TYPE_FCE);
18574
18575 IF l_is_solver_model THEN
18576 SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
18577 FROM cz_fce_files
18578 WHERE component_id = p_model_id AND deleted_flag = '0';
18579 ELSE
18580 SELECT MAX(last_update_date) INTO l_root_logic_last_update_date
18581 FROM cz_lce_headers
18582 WHERE cz_lce_headers.component_id = p_model_id AND cz_lce_headers.deleted_flag = '0';
18583 END IF;
18584
18585 IF l_root_logic_last_update_date IS NULL OR l_root_logic_last_update_date < l_prj_last_logic_update THEN
18586 x_return_status := 1;
18587 x_msg_data := l_root_model_name;
18588 RETURN;
18589 END IF;
18590
18591 OPEN model_cur(p_model_id);
18592 LOOP
18593 FETCH model_cur INTO l_component_id;
18594 EXIT WHEN model_cur%NOTFOUND;
18595 --vsingava 30th Sep '08
18596 --bug6348111
18597 BEGIN
18598 SELECT last_logic_update, NAME, last_struct_update
18599 INTO l_prj_last_logic_update, l_model_name, l_prj_last_struct_update
18600 FROM cz_devl_projects
18601 WHERE cz_devl_projects.devl_project_id = l_component_id AND deleted_flag = '0';
18602 EXCEPTION
18603 WHEN OTHERS THEN
18604 l_prj_last_logic_update := NULL;
18605 END;
18606
18607 IF l_prj_last_logic_update IS NOT NULL THEN
18608 IF l_is_solver_model THEN
18609 SELECT MAX(last_update_date) INTO l_logic_last_update_date
18610 FROM cz_fce_files
18611 WHERE component_id = l_component_id AND deleted_flag = '0';
18612 ELSE
18613 SELECT MAX(last_update_date) INTO l_logic_last_update_date
18614 FROM cz_lce_headers
18615 WHERE cz_lce_headers.component_id = l_component_id AND cz_lce_headers.deleted_flag = '0';
18616 END IF;
18617 END IF;
18618
18619 IF l_prj_last_logic_update IS NULL OR l_logic_last_update_date IS NULL OR
18620 l_logic_last_update_date < l_prj_last_logic_update THEN
18621 x_return_status := 1;
18622 x_msg_data := l_model_name;
18623 EXIT;
18624 ELSIF l_root_logic_last_update_date < l_prj_last_struct_update THEN
18625 x_return_status := 1;
18626 x_msg_data := l_root_model_name;
18627 EXIT;
18628 END IF;
18629 END LOOP;
18630
18631 CLOSE model_cur;
18632 END IF;
18633 EXCEPTION
18634 WHEN OTHERS THEN
18635 x_return_status := 1;
18636 x_msg_data := SQLERRM;
18637 END is_model_upto_date;
18638 --------------------------------------------------------------------------------
18639 -- private, check all uis if input uidefid null, check the given ui tree otherwise
18640 PROCEDURE model_upto_date(modelid IN NUMBER, status IN OUT NOCOPY VARCHAR2, uidefid IN NUMBER DEFAULT NULL)
18641 AS
18642 l_model_name VARCHAR2(4000);
18643 l_ui_name cz_ui_defs.NAME%TYPE;
18644 l_ui_model_name VARCHAR2(4000);
18645 l_model_status NUMBER;
18646 l_ui_status NUMBER;
18647 l_folder_id NUMBER;
18648 l_folder_path VARCHAR2(4000);
18649 l_model_upto_date BOOLEAN;
18650 l_ui_upto_date BOOLEAN;
18651 l_uidef_tbl t_ref;
18652 BEGIN
18653 l_model_upto_date := TRUE;
18654 is_model_upto_date(modelid, l_model_status, l_model_name);
18655
18656 IF l_model_status IS NOT NULL AND l_model_status <> 0 THEN
18657 l_model_upto_date := FALSE;
18658 END IF;
18659
18660 l_ui_upto_date := TRUE;
18661
18662 IF uidefid IS NULL THEN
18663 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
18664 SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
18665 FROM cz_ui_defs
18666 WHERE deleted_flag='0' AND ui_style=g_ui_style_jrad AND devl_project_id IN
18667 (SELECT component_id FROM cz_model_ref_expls
18668 WHERE deleted_flag='0' AND model_id=modelid);
18669 ELSE
18670 SELECT ui_def_id BULK COLLECT INTO l_uidef_tbl
18671 FROM cz_ui_defs
18672 WHERE deleted_flag='0' AND ui_style<>-1 AND devl_project_id IN
18673 (SELECT component_id FROM cz_model_ref_expls
18674 WHERE deleted_flag='0' AND model_id=modelid);
18675 END IF;
18676
18677 IF l_uidef_tbl.COUNT > 0 THEN
18678 FOR i IN l_uidef_tbl.FIRST .. l_uidef_tbl.LAST LOOP
18679 is_ui_upto_date(p_ui_def_id => l_uidef_tbl(i)
18683 ,x_model_name => l_ui_model_name
18680 ,p_report_model_info => 1
18681 ,x_return_status => l_ui_status
18682 ,x_msg_data => l_ui_name
18684 ,p_check_root_ui_only=> TRUE
18685 );
18686 IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
18687 l_ui_upto_date := FALSE;
18688 EXIT;
18689 END IF;
18690 END LOOP;
18691 END IF;
18692 ELSE
18693 is_ui_upto_date(uidefid, 1, l_ui_status, l_ui_name, l_ui_model_name);
18694 IF l_ui_status IS NOT NULL AND l_ui_status <> 0 THEN
18695 l_ui_upto_date := FALSE;
18696 END IF;
18697 END IF;
18698
18699 -- l_status := NVL(l_model_status,0) + NVL(l_ui_status,0);
18700 -- 0 ok, 1 model not up to date, 2 ui node up to date, 3 both model and ui not up to date
18701 IF NOT l_ui_upto_date OR NOT l_model_upto_date THEN
18702 BEGIN
18703 SELECT enclosing_folder
18704 INTO l_folder_id
18705 FROM cz_rp_entries
18706 WHERE object_id = modelid AND enclosing_folder <> 0 AND object_type = 'PRJ' AND deleted_flag = '0';
18707
18708 FOR rp_rec IN (SELECT NAME
18709 FROM cz_rp_entries
18710 START WITH object_type = 'FLD' AND object_id = l_folder_id
18711 CONNECT BY PRIOR enclosing_folder = object_id AND object_type = 'FLD' AND object_id <> 0 AND deleted_flag = '0')
18712 LOOP
18713 l_folder_path := rp_rec.NAME || '/' || l_folder_path;
18714 END LOOP;
18715 EXCEPTION
18716 WHEN OTHERS THEN
18717 l_folder_path := NULL;
18718 END;
18719 END IF;
18720
18721 IF l_folder_path IS NOT NULL AND NOT l_model_upto_date THEN
18722 l_model_name := l_folder_path || l_model_name;
18723 END IF;
18724
18725 IF l_folder_path IS NOT NULL AND NOT l_ui_upto_date THEN
18726 l_ui_model_name := l_folder_path || l_ui_model_name;
18727 END IF;
18728
18729 IF NOT l_ui_upto_date AND l_model_upto_date THEN -- l_status = 2
18730 status :=
18731 cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'UI' || ' ''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
18732 ELSIF l_ui_upto_date AND NOT l_model_upto_date THEN -- l_status = 1
18733 status := cz_utils.get_text('CZ_PB_MODEL_NOT_UP_TO_DATE', 'STRING', 'LOGIC', 'MODELID', '''' || l_model_name || '''');
18734 ELSIF NOT l_ui_upto_date AND NOT l_model_upto_date THEN -- l_status = 3
18735 status :=
18736 cz_utils.get_text('CZ_PB_UI_LOGIC_NOT_UP_TO_DATE', 'STRING', '''' || l_ui_name || '''', 'MODELID', '''' || l_ui_model_name || '''');
18737 ELSE
18738 status := '0';
18739 END IF;
18740 EXCEPTION
18741 WHEN OTHERS THEN
18742 log_pb_errors(SQLERRM, 1, 'cz_pb_mgr.MODEL_UPTO_DATE', SQLCODE);
18743 raise_application_error(-20010, SQLERRM);
18744 END model_upto_date;
18745 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18746 -- public
18747 PROCEDURE model_upto_date(modelid IN NUMBER, uidefid IN NUMBER, status IN OUT NOCOPY VARCHAR2)
18748 AS
18749 BEGIN
18750 model_upto_date(modelid, status, uidefid);
18751 END model_upto_date;
18752 ----------------------------------------------------------------------------------
18753 FUNCTION migrate_name(p_devl_project_id IN NUMBER)
18754 RETURN VARCHAR2
18755 IS
18756 original_name cz_devl_projects.NAME%TYPE;
18757 v_name cz_devl_projects.NAME%TYPE;
18758 v_instance_name cz_servers.instance_name%TYPE;
18759 v_null PLS_INTEGER;
18760 l_endBr varchar2(3):=NULL;
18761 BEGIN
18762 BEGIN
18763 SELECT instance_name
18764 INTO v_instance_name
18765 FROM cz_servers
18766 WHERE server_local_id = 0;
18767
18768 SELECT NAME
18769 INTO original_name
18770 FROM cz_rp_entries
18771 WHERE object_id = p_devl_project_id AND object_type = 'PRJ' AND deleted_flag = '0';
18772 EXCEPTION
18773 WHEN NO_DATA_FOUND
18774 THEN
18775 original_name := NULL;
18776 RAISE;
18777 WHEN OTHERS
18778 THEN
18779 original_name := NULL;
18780 RAISE;
18781 END;
18782
18783 IF (original_name IS NOT NULL)
18784 THEN
18785 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
18786 v_name := SUBSTR (original_name|| '-[FCE]', 1, 235);
18787
18788 ELSE
18789 v_name :=
18790 SUBSTR (original_name
18791 || ' (Migrated from '
18792 || v_instance_name
18793 || ':'
18794 || REPLACE(cz_developer_utils_pvt.get_repository_path(p_devl_project_id, 'PRJ'), '/', '.'), 1, 235);
18795 -- Bug 5514199; 12-Sep-2006; kdande; Taking 235 chars only as other characters would be appended at runtime like copy x, rules etc
18796 END IF;
18797
18798 IF cz_pb_mgr.v_session_parameter=cz_model_migration_pvt.migrate_model AND cz_pb_mgr.v_server_id=0 THEN
18799 l_endBr:='';
18800 ELSE
18801 l_endBr:=')';
18802 END IF;
18806 || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
18803 BEGIN
18804 EXECUTE IMMEDIATE 'SELECT NULL FROM cz_rp_entries'
18805 || cz_pb_mgr.v_db_link
18807 || ' name = :1'
18808 INTO v_null
18809 USING v_name || l_endBr;
18810 EXCEPTION
18811 WHEN NO_DATA_FOUND
18812 THEN
18813 RETURN v_name || l_endBr;
18814 END;
18815
18816 BEGIN
18817 EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM cz_rp_entries'
18818 || cz_pb_mgr.v_db_link
18819 || ' WHERE deleted_flag = ''0'' AND object_type = ''PRJ'' AND '
18820 || ' name LIKE :1'
18821 INTO v_null
18822 USING v_name || ' copy _%'||l_endBr;
18823
18824 --This is copy v_null + 1.
18825 RETURN v_name || ' copy ' || TO_CHAR(v_null + 1) || l_endBr;
18826 EXCEPTION
18827 WHEN NO_DATA_FOUND
18828 THEN
18829 RETURN v_name || ' copy 1'||l_endBr;
18830 END;
18831 END IF;
18832 EXCEPTION
18833 WHEN OTHERS
18834 THEN
18835 log_report('cz_utils', 'migrate_name', 1, SQLERRM, fnd_log.level_unexpected);
18836 v_name := 'ERROR';
18837 RETURN v_name;
18838 END;
18839
18840 ----------------------------------------------------------------------------------
18841 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
18842 ---------procedure to publish a single model
18843 PROCEDURE publish_model(publicationid IN NUMBER, x_run_id IN OUT NOCOPY NUMBER, x_pb_status IN OUT NOCOPY VARCHAR2)
18844 AS
18845 l_publication_proc CONSTANT VARCHAR2(10) := 'CZ_PB_MGR';
18846 l_migration_proc CONSTANT VARCHAR2(20) := 'CZ_MODEL_MIGRATION';
18847 l_proc_name v$session.module%TYPE;
18848 v_check_publication BOOLEAN;
18849 v_new_copy_pb_id cz_model_publications.publication_id%TYPE;
18850 v_new_model_id cz_model_publications.model_id%TYPE;
18851 v_prev_publication_id cz_model_publications.publication_id%TYPE;
18852 v_prev_export_status cz_model_publications.export_status%TYPE;
18853 v_cur_export_status cz_model_publications.export_status%TYPE;
18854 v_pb_mode cz_model_publications.publication_mode%TYPE;
18855 l_tgt_status VARCHAR2(1);
18856 l_tgt_msg VARCHAR2(2000);
18857 l_msg_data VARCHAR2(2000);
18858 l_msg_count NUMBER;
18859 l_lock_status VARCHAR2(1);
18860 v_rp_entries_name cz_rp_entries.NAME%TYPE;
18861 v_rp_entries_desc cz_rp_entries.description%TYPE;
18862 v_object_id cz_rp_entries.object_id%TYPE;
18863 v_rp_orig_sys_ref VARCHAR2(255);
18864 v_imp_ps_node_count PLS_INTEGER;
18865 l_locked_models cz_security_pvt.number_type_tbl;
18866 l_upto_date_status VARCHAR2(2000);
18867 l_msg_index NUMBER;
18868 v_max_rec_id NUMBER;
18869 l_message VARCHAR2(32000);
18870 l_srcroot VARCHAR2(32000);
18871 l_targrootpath VARCHAR2(32000);
18872 l_srcmodel VARCHAR2(32000);
18873 l_tgt_fld_path VARCHAR2(32000);
18874
18875 v_import_server_on_remote cz_servers.server_local_id%TYPE;
18876 l_target_imp_server_on_local cz_servers.server_local_id%TYPE;
18877
18878 has_no_priv_to_publish EXCEPTION;
18879 failed_to_lock_model EXCEPTION;
18880 priv_check_err EXCEPTION;
18881 not_global_template EXCEPTION;
18882 model_not_upto_date EXCEPTION;
18883 invalid_object_type EXCEPTION;
18884 user_not_initialized EXCEPTION;
18885 cz_pb_link_problem EXCEPTION;
18886
18887 BEGIN
18888 pbdebug := 22001;
18889 delete_session_parameters;
18890 clear_all_tables(cz_pb_mgr.v_status_code);
18891 initialize_pb_parameters(publicationid);
18892
18893 IF (fnd_global.user_name IS NULL) THEN
18894 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', 'User is not initialized on session');
18895 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CHECKUSER', 21002);
18896 RAISE user_not_initialized;
18897 END IF;
18898
18899 get_source_pb_info(publicationid
18900 ,cz_pb_mgr.v_root_model_id
18901 ,cz_pb_mgr.v_root_ui_def_id
18902 ,cz_pb_mgr.v_server_id
18903 ,v_cur_export_status
18904 ,cz_pb_mgr.remote_publication_id
18905 ,g_object_type
18906 ,v_pb_mode
18907 ,cz_pb_mgr.v_status_code
18908 );
18909
18910 -- check if there is another publishing or a pub sync or a migration process running
18911 IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
18912 l_proc_name := cz_pb_sync_util.check_process;
18913 ELSE -- must be migration because no stand alone UIT publication
18914 BEGIN
18915 SELECT module INTO l_proc_name FROM V$SESSION WHERE module = l_migration_proc;
18916 EXCEPTION
18917 WHEN NO_DATA_FOUND THEN
18918 NULL;
18919 END;
18920 END IF;
18921
18922 IF l_proc_name IS NOT NULL THEN
18923 IF l_proc_name = l_publication_proc THEN
18924 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'publication');
18925 ELSIF l_proc_name = l_migration_proc THEN
18926 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_PROCESS_EXISTS', 'PROC_TYPE', 'model migration');
18927 ELSE
18928 cz_pb_mgr.v_err_message := CZ_UTILS.GET_TEXT('CZ_PB_SYNC_PROCESS_EXISTS');
18929 END IF;
18933 cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
18930 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message,'cz_pb_mgr.CHKPROCESS',21001);
18931 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
18932 x_pb_status := PUBLICATION_ERROR;
18934 log_pb_errors(cz_pb_mgr.v_err_message,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
18935 RETURN;
18936 END IF;
18937
18938 -- register application
18939 IF g_object_type = cz_pb_mgr.MODEL_PUBLICATION THEN
18940 dbms_application_info.set_module(l_publication_proc, '');
18941 ELSE
18942 dbms_application_info.set_module(l_migration_proc, '');
18943 END IF;
18944
18945 BEGIN
18946 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
18947 log_timing_message('start publish model');
18948 END IF;
18949
18950 ----check if model is up to date
18951 -- IF (g_object_type = MODEL_PUBLICATION) THEN
18952 model_upto_date(cz_pb_mgr.v_root_model_id, l_upto_date_status);
18953
18954 IF (l_upto_date_status <> '0') THEN
18955 cz_pb_mgr.v_err_message := l_upto_date_status;
18956 RAISE model_not_upto_date;
18957 END IF;
18958 -- END IF;
18959
18960 IF (g_object_type = template_publication) THEN
18961 check_ui_template_exist(cz_pb_mgr.v_root_model_id, cz_pb_mgr.v_status_code);
18962
18963 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
18964 RAISE not_global_template;
18965 END IF;
18966 ELSIF(g_object_type = MODEL_PUBLICATION) THEN
18967 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);
18968 ELSIF(cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
18969 RAISE invalid_object_type;
18970 END IF;
18971
18972 check_export_status(v_cur_export_status, cz_publish, cz_pb_mgr.v_status_code);
18973
18974 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
18975 RAISE invalid_object_type;
18976 END IF;
18977
18978 ------ retrieve_db_link
18979 cz_pb_mgr.v_db_link := retrieve_db_link(cz_pb_mgr.v_server_id);
18980
18981 -----check for source server flag on the target instance
18982 IF (cz_pb_mgr.v_server_id <> 0) THEN
18983 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
18984 cz_pb_sync_util.verify_mig_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
18985 ELSE
18986 cz_pb_sync_util.verify_tgt_server(cz_pb_mgr.v_db_link, l_tgt_status, l_tgt_msg);
18987 END IF;
18988
18989 IF (l_tgt_status <> '0') THEN
18990
18991 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', l_tgt_msg);
18992 RAISE cz_pb_link_problem;
18993 END IF;
18994 END IF;
18995
18996 l_target_imp_server_on_local := cz_pb_mgr.v_server_id;
18997
18998 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
18999
19000 ----check for remote publication id on the target instance
19001
19002 remote_pb_check(cz_pb_mgr.remote_publication_id);
19003
19004 ELSE
19005
19006 /*
19007 * Bug 5516478
19008 * On migrating a model to a remote server, if there are BOM models involved,
19009 * CZ_XFR_PROJECT_BILLS are also migrated. However, the column SOURCE_SERVER
19010 * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
19011 * migration target. Currently it was being copied from the source to the
19012 * target. In order to do this we need to query CZ_SERVERS in the migration
19013 * target to get the SERVER_LOCAL_ID.
19014 */
19015
19016 v_import_server_on_remote := getRemoteImportServer(l_target_imp_server_on_local);
19017
19018 END IF;
19019
19020 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19021 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19022 log_timing_message('start has_tobe_published');
19023 END IF;
19024
19025 ----check if the publication has to be published
19026 IF (cz_pb_mgr.v_session_parameter <> cz_model_migration_pvt.migrate_model) THEN
19027 v_check_publication := has_tobe_published(publicationid);
19028 ELSE
19029 v_check_publication := TRUE;
19030 ---for publishing, rules related tables are cleared in get_oa_tmpls
19031 ---which is called from has_to_be_published.
19032 ---for model migration, get_oa_tmpls is called from upload_ui_schema
19033 ---at which point, tables cannot be cleared because rules of the model have
19034 ---already been collected in these tables from bulk_collect_rules.
19035 ---so, if model migration, the rules related tables will NOT be cleared
19036 ---get_oa_tmpls.
19037 clear_tables('cz_rules', 'ref', cz_pb_mgr.v_status_code);
19038 END IF;
19039
19040 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19041 log_timing_message('end has_tobe_published');
19042 END IF;
19043
19044 cz_security_pvt.lock_model(1.0
19045 ,cz_pb_mgr.v_root_model_id
19046 ,fnd_api.g_true
19047 ,fnd_api.g_true
19048 ,l_locked_models
19049 ,l_lock_status
19050 ,l_msg_count
19054 IF (l_lock_status <> 'S') THEN
19051 ,l_msg_data
19052 );
19053
19055 l_msg_index := 1;
19056
19057 WHILE l_msg_count > 0
19058 LOOP
19059 cz_pb_mgr.v_err_message :=
19060 cz_utils.get_text('CZ_PB_FATAL_ERR', 'PUBID', publicationid, 'SQLERRM', fnd_msg_pub.get(l_msg_index, fnd_api.g_false));
19061 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOCKMODEL', SQLCODE);
19062 l_msg_index := l_msg_index + 1;
19063 l_msg_count := l_msg_count - 1;
19064 END LOOP;
19065
19066 RAISE failed_to_lock_model;
19067 END IF;
19068
19069 UPDATE cz_model_publications
19070 SET export_status = publication_processing
19071 WHERE publication_id = cz_pb_mgr.v_publication_id;
19072
19073 IF (v_check_publication) THEN
19074 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19075 log_timing_message('start verify_model_for_sync');
19076 END IF;
19077
19078 IF (g_object_type = MODEL_PUBLICATION OR cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
19079 verify_model_for_sync(l_target_imp_server_on_local, cz_pb_mgr.v_root_model_id);
19080 END IF;
19081
19082 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19083 log_timing_message('end verify_model_for_sync');
19084 log_timing_message('start proc_export');
19085 END IF;
19086
19087 BEGIN
19088 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);
19089
19090 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
19091 cz_pb_mgr.v_err_message := 'model data up to date, no fresh data export required';
19092 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.publish_model', SQLCODE);
19093 END IF;
19094
19095 insert_template_elements;
19096
19097 --------------------------------------------------------------------------------------------
19098 --If this is Model Migration, insert into cz_rp_entries, calculate max_persistent_rec_id and
19099 --and insert into CZ_PERSISTENT_REC_IDS with its value, report the migrated and not migrated models.
19100 --------------------------------------------------------------------------------------------
19101
19102 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19103 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model) THEN
19104 EXECUTE IMMEDIATE 'SELECT REPLACE(cz_developer_utils_pvt.get_repository_path'
19105 || cz_pb_mgr.v_db_link
19106 || '(:1, ''FLD''), ''/'', ''.'') FROM DUAL'
19107 INTO l_tgt_fld_path
19108 USING cz_pb_mgr.g_migration_tgt_folder_id;
19109
19110 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
19111 v_imp_ps_node_count := 0;
19112
19113 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
19114 LOOP
19115 v_imp_ps_node_count := cz_pb_mgr.v_imported_ps_ref.COUNT + 1;
19116 cz_pb_mgr.v_imported_ps_node := cz_pb_mgr.v_models_to_be_exported(i);
19117 cz_pb_mgr.v_imported_ps_ref(v_imp_ps_node_count) := cz_pb_mgr.v_models_to_be_exported(i);
19118
19119 BEGIN
19120 SELECT remote_model_id
19121 INTO v_object_id
19122 FROM cz_pb_model_exports
19123 WHERE cz_pb_model_exports.model_id = cz_pb_mgr.v_models_to_be_exported(i)
19124 AND cz_pb_model_exports.publication_id = cz_pb_mgr.v_publication_id;
19125 EXCEPTION
19126 WHEN OTHERS THEN
19127 cz_pb_mgr.v_err_message := 'Error in retrieving remote model id : ' || SQLERRM;
19128 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19129 END;
19130
19131 BEGIN
19132 SELECT desc_text, orig_sys_ref
19133 INTO v_rp_entries_desc, v_rp_orig_sys_ref
19134 FROM cz_devl_projects
19135 WHERE cz_devl_projects.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND cz_devl_projects.deleted_flag = '0';
19136 EXCEPTION
19137 WHEN NO_DATA_FOUND THEN
19138 v_rp_orig_sys_ref := NULL;
19139 cz_pb_mgr.v_err_message := 'No desc exists for devl_project_id : ' || SQLERRM;
19140 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19141 WHEN OTHERS THEN
19142 v_rp_orig_sys_ref := NULL;
19143 cz_pb_mgr.v_err_message := 'Error in retrieving desc from cz_devl_projects for devl_project_id: ' || SQLERRM;
19144 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19148 v_rp_entries_name := migrate_name(cz_pb_mgr.v_models_to_be_exported(i));
19145 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19146 END;
19147
19149
19150 IF (v_rp_entries_name = 'ERROR') THEN
19151 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19152 END IF;
19153
19154 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19155 cz_pb_mgr.v_new_object_id := v_object_id;
19156
19157 BEGIN
19158 cz_pb_mgr.v_rp_folder_id := cz_pb_mgr.g_migration_tgt_folder_id;
19159 cz_pb_mgr.v_rp_name := v_rp_entries_name;
19160 cz_pb_mgr.v_rp_desc := v_rp_entries_desc;
19161
19162 EXECUTE IMMEDIATE 'BEGIN'
19163 || ' '
19164 || 'insert into cz_rp_entries'
19165 || cz_pb_mgr.v_db_link
19166 || ' ( OBJECT_TYPE'
19167 || ' '
19168 || ',OBJECT_ID'
19169 || ' '
19170 || ',ENCLOSING_FOLDER'
19171 || ' '
19172 || ',NAME'
19173 || ' '
19174 || ',DESCRIPTION'
19175 || ' '
19176 || ',DELETED_FLAG'
19177 || ' '
19178 || ',SEEDED_FLAG'
19179 || ' '
19180 || ')'
19181 || ' '
19182 || 'VALUES ( ''PRJ'''
19183 || ' '
19184 || ',cz_pb_mgr.v_new_object_id'
19185 || ' '
19186 || ',cz_pb_mgr.v_rp_folder_id'
19187 || ' '
19188 || ',cz_pb_mgr.v_rp_name'
19189 || ' '
19190 || ',cz_pb_mgr.v_rp_desc'
19191 || ' '
19192 || ',''0'''
19193 || ' '
19194 || ',''0'');'
19195 || ' '
19196 || 'commit;'
19197 || ' '
19198 || 'END;';
19199 EXCEPTION
19200 WHEN OTHERS THEN
19201 cz_pb_mgr.v_err_message := 'Error in inserting into cz_rp_entries: ' || SQLERRM;
19202 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19203 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19204 END;
19205
19206 BEGIN
19207 IF (cz_pb_mgr.v_rp_name IS NOT NULL) THEN
19208
19209 EXECUTE IMMEDIATE 'BEGIN'
19210 || ' '
19211 || 'UPDATE cz_devl_projects'
19212 || cz_pb_mgr.v_db_link
19213 || ' t'
19214 || ' '
19215 || 'SET t.name = cz_pb_mgr.v_rp_name'
19216 || ', post_migr_change_flag = '''
19217 || cz_model_migration_pvt.change_flag_unchanged
19218 || ''' '
19219 || 'WHERE t.devl_project_id = '
19220 || cz_pb_mgr.v_new_object_id
19221 || ';'
19222 || ' '
19223 || 'END;';
19224
19225 END IF;
19226
19227 COMMIT;
19228 EXCEPTION
19229 WHEN OTHERS THEN
19230 cz_pb_mgr.v_err_message := 'Error in updating cz_devl_projects with the new project name: ' || SQLERRM;
19231 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19232 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19233 END;
19234
19235 --Calculate the max_persistent_rec_id for the model and insert into CZ_PERSISTENT_REC_IDS.
19239 || ' NVL((SELECT MAX(persistent_rule_id) FROM cz_rules'
19236 EXECUTE IMMEDIATE 'SELECT GREATEST(NVL((SELECT MAX(persistent_node_id) FROM cz_ps_nodes'
19237 || cz_pb_mgr.v_db_link
19238 || ' WHERE deleted_flag = ''0'' AND devl_project_id = :1), 0),'
19240 || cz_pb_mgr.v_db_link
19241 || ' WHERE deleted_flag = ''0'' AND devl_project_id = :2), 0),'
19242 || ' NVL((SELECT MAX(persistent_intl_text_id) FROM cz_localized_texts'
19243 || cz_pb_mgr.v_db_link
19244 || ' WHERE deleted_flag = ''0'' AND model_id = :3), 0)) FROM DUAL'
19245 INTO v_max_rec_id
19246 USING v_object_id, v_object_id, v_object_id;
19247
19248
19249 BEGIN
19250
19251 EXECUTE IMMEDIATE 'BEGIN'
19252 || ' '
19253 || 'INSERT INTO CZ_PERSISTENT_REC_IDS'
19254 || cz_pb_mgr.v_db_link
19255 || '(devl_project_id,max_persistent_rec_id,deleted_flag)'
19256 || ' '
19257 || 'values(:1,:2,0) '
19258 || ';'
19259 || ' '
19260 || 'END;' USING cz_pb_mgr.v_new_object_id,v_max_rec_id;
19261
19262
19263 COMMIT;
19264 EXCEPTION
19265 WHEN OTHERS THEN
19266 cz_pb_mgr.v_err_message := 'Error in inserting into CZ_PERSISTENT_REC_IDS' || SQLERRM;
19267 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19268 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19269 END;
19270
19271 ------insert into cz_xfr_project_bills
19272 IF (v_rp_orig_sys_ref IS NOT NULL) THEN
19273 BEGIN
19274 EXECUTE IMMEDIATE 'BEGIN'
19275 || ' '
19276 || 'insert into cz_xfr_project_bills'
19277 || cz_pb_mgr.v_db_link
19278 || ' ('
19279 || ' '
19280 || 'MODEL_PS_NODE_ID'
19281 || ' '
19282 || ',ORGANIZATION_ID'
19283 || ' '
19284 || ',COMPONENT_ITEM_ID'
19285 || ' '
19286 || ',DESCRIPTION'
19287 || ' '
19288 || ',LAST_IMPORT_RUN_ID'
19289 || ' '
19290 || ',LAST_IMPORT_DATE'
19291 || ' '
19292 || ',SOURCE_BILL_DELETED'
19293 || ' '
19294 || ',TOP_ITEM_ID'
19295 || ' '
19296 || ',DELETED_FLAG'
19297 || ' '
19298 || ',EXPLOSION_TYPE'
19299 || ' '
19300 || ',BILL_REVISION_DATE'
19301 || ' '
19302 || ',EFF_FROM'
19303 || ' '
19304 || ',EFF_TO'
19305 || ' '
19306 || ',SOURCE_SERVER'
19307 || ' '
19308 || ',COPY_ADDL_CHILD_MODELS'
19309 || ' '
19310 || ')'
19311 || ' '
19312 || 'SELECT cz_pb_mgr.v_new_object_id'
19313 || ' '
19314 || ',ORGANIZATION_ID'
19315 || ' '
19316 || ',COMPONENT_ITEM_ID'
19317 || ' '
19318 || ',DESCRIPTION'
19319 || ' '
19320 || ',LAST_IMPORT_RUN_ID'
19324 || ',SOURCE_BILL_DELETED'
19321 || ' '
19322 || ',LAST_IMPORT_DATE'
19323 || ' '
19325 || ' '
19326 || ',TOP_ITEM_ID'
19327 || ' '
19328 || ',DELETED_FLAG'
19329 || ' '
19330 || ',EXPLOSION_TYPE'
19331 || ' '
19332 || ',BILL_REVISION_DATE'
19333 || ' '
19334 || ',EFF_FROM'
19335 || ' '
19336 || ',EFF_TO'
19337 || ' '
19338 || ',:1'
19339 || ' '
19340 || ',COPY_ADDL_CHILD_MODELS'
19341 || ' '
19342 || 'FROM cz_xfr_project_bills'
19343 || ' '
19344 || 'WHERE cz_xfr_project_bills.MODEL_PS_NODE_ID = cz_pb_mgr.v_imported_ps_node'
19345 || ' '
19346 || 'AND cz_xfr_project_bills.deleted_flag = ''0'';'
19347 || ' '
19348 || 'commit;'
19349 || ' '
19350 || 'END;'
19351 USING v_import_server_on_remote;
19352 EXCEPTION
19353 WHEN NO_DATA_FOUND THEN
19354 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19355 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19356 WHEN OTHERS THEN
19357 cz_pb_mgr.v_err_message := 'Error in inserting into cz_xfr_projects : ' || SQLERRM;
19358 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MIGRATEMODEL', SQLCODE);
19359 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19360 END;
19361 END IF;
19362 END IF;
19363
19364 IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
19365 l_srcroot := REPLACE(cz_developer_utils_pvt.get_repository_path(cz_pb_mgr.v_root_model_id, 'PRJ'), '/', '.');
19366 l_targrootpath := l_tgt_fld_path || '.' || v_rp_entries_name;
19367 END IF;
19368
19369 v_remote_names_exported(i) := v_rp_entries_name;
19370 END LOOP;
19371
19372 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19373 FOR i IN 1 .. v_models_to_be_exported.COUNT
19374 LOOP
19375 IF (cz_pb_mgr.v_models_to_be_exported(i) = cz_pb_mgr.v_root_model_id) THEN
19376 --Root Model %SRCROOT was migrated to instance %TARGET as %TARGROOTPATH.
19377 l_message :=
19378 cz_utils.get_text('CZ_MM_ROOT_EXPORTED'
19379 ,'SRCROOT'
19380 ,l_srcroot
19381 ,'TARGET'
19382 ,cz_pb_mgr.v_server_local_name
19383 ,'TARGROOTPATH'
19384 ,l_targrootpath
19385 );
19386 log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
19387 ELSE
19388 --Referenced Model %SRCMODEL was migrated to instance %TARGET as %TARGREPOSPATH when migrating %SRCROOT to %TARGROOTPATH.
19389 l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_to_be_exported(i), 'PRJ'), '/', '.');
19390 l_message :=
19391 cz_utils.get_text('CZ_MM_MODEL_EXPORTED'
19392 ,'SRCMODEL'
19393 ,l_srcmodel
19394 ,'TARGET'
19395 ,cz_pb_mgr.v_server_local_name
19396 ,'TARGREPOSPATH'
19397 , l_tgt_fld_path || '.' || v_remote_names_exported(i)
19398 ,'SRCROOT'
19399 ,l_srcroot
19400 ,'TARGROOTPATH'
19401 ,l_targrootpath
19402 );
19406 END IF;
19403 log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
19404 END IF;
19405 END LOOP;
19407 END IF;
19408
19409 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19410 FOR i IN 1 .. v_models_not_to_be_exported.COUNT
19411 LOOP
19412 --Referenced Model %SRCMODEL is unchanged locally and on instance %TARGET since its prior migration as %TARGREPOSPATH.
19413 --It has been reused in migrating root Model %SRCROOT to %TARGROOTPATH.
19414 l_srcmodel := REPLACE(cz_developer_utils_pvt.get_repository_path(v_models_not_to_be_exported(i), 'PRJ'), '/', '.');
19415 l_message :=
19416 cz_utils.get_text('CZ_MM_MODEL_NOT_EXPORTED'
19417 ,'SRCMODEL'
19418 ,l_srcmodel
19419 ,'TARGET'
19420 ,cz_pb_mgr.v_server_local_name
19421 ,'TARGREPOSPATH'
19422 ,v_remote_names_not_exported(v_models_not_to_be_exported(i))
19423 ,'SRCROOT'
19424 ,l_srcroot
19425 ,'TARGROOTPATH'
19426 ,l_targrootpath
19427 );
19428 log_pb_errors(l_message, 0, 'cz_pb_mgr.MIGRATEMODEL', -1);
19429 END LOOP;
19430 END IF;
19431 END IF;
19432 END IF;
19433
19434 --------------------------------------------------------------------------------------------
19435 --End of Model Migration section.
19436 --------------------------------------------------------------------------------------------
19437
19438 -------update source pb record
19439 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);
19440
19441 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) THEN
19442 cz_pb_mgr.v_err_message :=
19443 cz_utils.get_text('CZ_PB_SUCCESS', 'MODELID', cz_pb_mgr.v_root_model_id, 'SERVERID', cz_pb_mgr.v_server_id);
19444 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PUBLISH_MODEL', SQLCODE);
19445 ELSE
19446 cz_pb_mgr.global_export_retcode := 2;
19447 rollback_data(cz_pb_mgr.v_db_link);
19448 END IF;
19449
19450 COMMIT;
19451 EXCEPTION
19452 WHEN OTHERS THEN
19453 -----message already logged
19454 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19455 update_publication_status(cz_pb_mgr.v_publication_id, PUBLICATION_ERROR, empty_string);
19456 END;
19457
19458 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19459 log_timing_message('end proc_export');
19460 END IF;
19461 ELSE /* else of IF (v_check_publication) THEN */
19462 BEGIN
19463 IF (cz_pb_mgr.remote_publication_id IS NOT NULL) THEN
19464 get_republish_pb_info(cz_pb_mgr.remote_publication_id
19465 ,'PUP'
19466 ,v_prev_publication_id
19467 ,v_prev_export_status
19468 ,cz_pb_mgr.v_prev_remote_publication_id
19469 ,cz_pb_mgr.v_status_code
19470 );
19471
19472 IF (v_prev_publication_id > 0) THEN
19473 cz_pb_mgr.v_err_message := 'Re-publish of publication: ' || TO_CHAR(publicationid);
19474 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZREPUB', SQLCODE);
19475 END IF;
19476 ELSIF(cz_pb_mgr.remote_publication_id IS NULL) THEN
19477 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);
19478 get_new_copy_pb_info(v_new_copy_pb_id
19479 ,v_prev_publication_id
19480 ,v_prev_export_status
19481 ,cz_pb_mgr.v_prev_remote_publication_id
19482 ,cz_pb_mgr.v_status_code
19483 );
19484
19485 IF (v_prev_publication_id > 0) THEN
19486 cz_pb_mgr.v_err_message := 'New Copy of publication: ' || TO_CHAR(NVL(publicationid, 0));
19487 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.CZNCOPY', SQLCODE);
19488 END IF;
19489 END IF; /* end if of IF (cz_pb_mgr.remote_publication_id IS NOT NULL) */
19490
19491 -------------get new sequence_no for the target publication_id
19492 get_new_publication_id(cz_pb_mgr.v_publication_id
19493 ,cz_pb_mgr.v_cz_model_pub_old_id
19494 ,cz_pb_mgr.v_cz_model_pub_new_id
19495 ,cz_pb_mgr.remote_publication_id
19496 ,cz_pb_mgr.v_status_code
19500 ,cz_pb_mgr.v_prev_remote_publication_id
19497 );
19498 ------get new ui def id and model id
19499 get_tgt_ui_def(cz_pb_mgr.v_root_ui_def_id
19501 ,v_new_model_id
19502 ,cz_pb_mgr.new_ui_def_id
19503 ,cz_pb_mgr.v_status_code
19504 );
19505 ------insert new target publication record
19506 insert_tgt_publication(cz_pb_mgr.v_cz_model_pub_new_id
19507 ,cz_pb_mgr.v_cz_model_pub_old_id
19508 ,v_new_model_id
19509 ,cz_pb_mgr.new_ui_def_id
19510 ,cz_pb_mgr.v_db_link
19511 ,'REPUBLISH'
19512 ,cz_pb_mgr.v_status_code
19513 );
19514 ---------------insert applicability parameters for tgt publication
19515 insert_pb_parameters(cz_pb_mgr.v_cz_model_pub_new_id
19516 ,cz_pb_mgr.v_cz_model_pub_old_id
19517 ,cz_pb_mgr.v_session_parameter
19518 ,cz_pb_mgr.v_db_link
19519 ,cz_pb_mgr.v_status_code
19520 );
19521 EXCEPTION
19522 WHEN OTHERS THEN
19523 -----message already logged
19524 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
19525 END;
19526
19527 ------reset status to the original if a re-publish fails
19528 IF (LTRIM(RTRIM(UPPER(v_prev_export_status))) = 'PUP') THEN
19529 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
19530 UPDATE cz_model_publications
19531 SET export_status = 'OK'
19532 WHERE publication_id = v_prev_publication_id;
19533 ELSE
19534 UPDATE cz_model_publications
19535 SET deleted_flag = '1'
19536 WHERE publication_id = v_prev_publication_id;
19537
19538 EXECUTE IMMEDIATE 'BEGIN'
19539 || ' '
19540 || 'UPDATE cz_model_publications'
19541 || cz_pb_mgr.v_db_link
19542 || ''
19543 || ' '
19544 || 'SET deleted_flag = ''1'''
19545 || ' '
19546 || 'WHERE publication_id = cz_pb_mgr.v_prev_remote_publication_id ;'
19547 || ' '
19548 || 'END;';
19549 END IF;
19550 END IF;
19551
19552 -------update source pb record
19553 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);
19554
19555 IF (cz_pb_mgr.v_status_code = PUBLICATION_ERROR) THEN
19556 -----set status for concurrent manager
19557 cz_pb_mgr.global_export_retcode := 2;
19558 rollback_data(cz_pb_mgr.v_db_link);
19559 END IF;
19560 END IF; /* end if of IF (v_check_publication) THEN */
19561 END IF; /* end if of (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) */
19562
19563 l_msg_count := 0;
19564 l_msg_index := 0;
19565 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19566
19567 IF (l_lock_status <> 'S') THEN
19568 l_msg_index := 1;
19569
19570 WHILE l_msg_count > 0
19571 LOOP
19572 cz_pb_mgr.error_msg_populate(fnd_msg_pub.get(l_msg_index, fnd_api.g_false), 'cz_pb_mgr.LOCKMODEL', SQLCODE);
19573 l_msg_index := l_msg_index + 1;
19574 l_msg_count := l_msg_count - 1;
19575 END LOOP;
19576 END IF;
19577
19578 -----insert_template_elements;
19579 -----------log trace
19580 IF ((cz_pb_mgr.v_pb_log_flag = 'YES') OR(cz_pb_mgr.v_status_code = PUBLICATION_ERROR)) THEN
19581 log_pb_trace;
19582 END IF;
19583
19584 x_run_id := cz_pb_mgr.v_pb_run_id;
19585 x_pb_status := cz_pb_mgr.v_status_code;
19586 /* cz_security_pvt.unlock_entity (cz_pb_mgr.v_root_model_id,
19587 cz_security_pvt.PUBLISH_MODEL_FUNCTION,
19588 l_locked_models,
19589 l_lock_status,
19590 l_msg_count,
19591 l_msg_data); */
19592 delete_session_parameters;
19593 -----unregister application
19594 cz_pb_sync_util.reset_dbms_info;
19595 COMMIT;
19596
19597 IF (cz_pb_mgr.g_log_timing = publication_timing) THEN
19598 log_timing_message('end publish model');
19599 END IF;
19600
19601 COMMIT;
19602 EXCEPTION
19603 WHEN user_not_initialized THEN
19604 x_pb_status := PUBLICATION_ERROR;
19605 x_run_id := cz_pb_mgr.v_pb_run_id;
19606 cz_pb_mgr.global_export_retcode := 2;
19607 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19608 update_pup_status(publicationid);
19609 log_pb_trace;
19610 delete_session_parameters;
19614 x_run_id := cz_pb_mgr.v_pb_run_id;
19611 WHEN priv_check_err THEN
19612 cz_pb_mgr.v_err_message := l_msg_data;
19613 x_pb_status := PUBLICATION_ERROR;
19615 cz_pb_mgr.global_export_retcode := 2;
19616 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
19617 delete_session_parameters;
19618 WHEN has_no_priv_to_publish THEN
19619 cz_pb_mgr.v_err_message := l_msg_data;
19620 x_pb_status := PUBLICATION_ERROR;
19621 x_run_id := cz_pb_mgr.v_pb_run_id;
19622 cz_pb_mgr.global_export_retcode := 2;
19623 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
19624 delete_session_parameters;
19625 WHEN failed_to_lock_model THEN
19626 x_pb_status := PUBLICATION_ERROR;
19627 x_run_id := cz_pb_mgr.v_pb_run_id;
19628 cz_pb_mgr.global_export_retcode := 2;
19629 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19630 update_pup_status(publicationid);
19631 cz_security_pvt.unlock_model(1.0, fnd_api.g_true, l_locked_models, l_lock_status, l_msg_count, l_msg_data);
19632 log_pb_trace;
19633 delete_session_parameters;
19634 WHEN not_global_template THEN
19635 x_pb_status := PUBLICATION_ERROR;
19636 x_run_id := cz_pb_mgr.v_pb_run_id;
19637 cz_pb_mgr.global_export_retcode := 2;
19638 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19639 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRPRIVCHK', -1);
19640 delete_session_parameters;
19641 WHEN model_not_upto_date THEN
19642 x_pb_status := PUBLICATION_ERROR;
19643 x_run_id := cz_pb_mgr.v_pb_run_id;
19644 cz_pb_mgr.global_export_retcode := 2;
19645 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19646 update_pup_status(publicationid);
19647 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRUPTODATE', -1);
19648 delete_session_parameters;
19649 WHEN invalid_object_type THEN
19650 x_pb_status := PUBLICATION_ERROR;
19651 x_run_id := cz_pb_mgr.v_pb_run_id;
19652 cz_pb_mgr.global_export_retcode := 2;
19653 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGROBJTYP', -1);
19654 delete_session_parameters;
19655 WHEN cz_pb_link_problem THEN
19656 x_pb_status := PUBLICATION_ERROR;
19657 x_run_id := cz_pb_mgr.v_pb_run_id;
19658 cz_pb_mgr.global_export_retcode := 2;
19659 update_publication_status(publicationid, PUBLICATION_ERROR, empty_string);
19660 update_pup_status(publicationid);
19661 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'CZPBMGRLNKPRBLM', -1);
19662 delete_session_parameters;
19663 END;
19664
19665 -- unregister application
19666 dbms_application_info.set_module('', '');
19667
19668 EXCEPTION
19669 WHEN OTHERS THEN
19670 x_run_id := cz_pb_mgr.v_pb_run_id ;
19671 x_pb_status := PUBLICATION_ERROR;
19672 cz_pb_mgr.GLOBAL_EXPORT_RETCODE := 2;
19673 log_pb_errors(SQLERRM,0,'cz_pb_mgr.PUBLISH_MODEL',-1);
19674 dbms_application_info.set_module('', '');
19675 RAISE;
19676 END publish_model;
19677
19678 ----------------------------------------------
19679 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19680 ------------wrappers used by concurrent manager to publish models
19681 PROCEDURE publish_models_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER)
19682 AS
19683 BEGIN
19684 retcode := 0;
19685 publish_all_models;
19686 errbuf := NULL;
19687
19688 IF (cz_pb_mgr.global_export_retcode = 1)
19689 THEN
19690 errbuf := cz_utils.get_text('CZ_PB_WARNING');
19691 END IF;
19692
19693 IF (cz_pb_mgr.global_export_retcode = 2)
19694 THEN
19695 errbuf := cz_utils.get_text('CZ_PB_FAILURE');
19696 END IF;
19697
19698 retcode := cz_pb_mgr.global_export_retcode;
19699 EXCEPTION
19700 WHEN OTHERS
19701 THEN
19702 retcode := 2;
19703 errbuf := cz_utils.get_text('CZ_PB_OTHERS');
19704 END;
19705
19706 PROCEDURE publish_single_model_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_publication_id NUMBER)
19707 AS
19708 v_run_id NUMBER := 0.0;
19709 v_pb_status VARCHAR2(3);
19710 BEGIN
19711 retcode := 0;
19712 cz_pb_mgr.global_export_retcode := 0;
19713 publish_model(p_publication_id, v_run_id, v_pb_status);
19714 errbuf := NULL;
19715
19716 IF (cz_pb_mgr.global_export_retcode = 1)
19717 THEN
19718 errbuf := cz_utils.get_text('CZ_PB_WARNING');
19719 END IF;
19720
19721 IF (cz_pb_mgr.global_export_retcode = 2)
19722 THEN
19723 errbuf := cz_utils.get_text('CZ_PB_FAILURE');
19724 END IF;
19725
19726 retcode := cz_pb_mgr.global_export_retcode;
19727 EXCEPTION
19728 WHEN OTHERS
19729 THEN
19730 retcode := 2;
19731 errbuf := cz_utils.get_text('CZ_PB_OTHERS');
19732 END;
19733
19734 --------------------------------------
19735 PROCEDURE seed_fnd_application_cp(errbuf IN OUT NOCOPY VARCHAR2, retcode IN OUT NOCOPY PLS_INTEGER, p_application_name VARCHAR2)
19736 AS
19737 v_run_id NUMBER := 0.0;
19738 v_pb_status VARCHAR2(3);
19739 l_application_id NUMBER;
19740 BEGIN
19741 retcode := 0;
19742
19743 SELECT application_id
19747
19744 INTO l_application_id
19745 FROM fnd_application_tl
19746 WHERE fnd_application_tl.application_name = p_application_name AND fnd_application_tl.language = USERENV('LANG');
19748 INSERT INTO cz_ext_applications
19749 (application_id, preferred_ui_style, seeded_flag, deleted_flag
19750 )
19751 VALUES (l_application_id, 3, '1', '0'
19752 );
19753
19754 errbuf := NULL;
19755 COMMIT;
19756 EXCEPTION
19757 WHEN OTHERS
19758 THEN
19759 retcode := 2;
19760 errbuf := cz_utils.get_text('CZ_APP_OTHERS', 'SQLERRM', SQLERRM);
19761 END;
19762
19763 ----------------------------------------
19764 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19765 ----------proc to delete a publication
19766 ----------
19767 PROCEDURE delete_publication(
19768 publicationid IN NUMBER
19769 ,x_return_status OUT NOCOPY VARCHAR2
19770 ,x_msg_count OUT NOCOPY NUMBER
19771 ,x_msg_data OUT NOCOPY VARCHAR2
19772 )
19773 AS
19774 v_server_id cz_model_publications.server_id%TYPE;
19775 v_cz_link_name cz_servers.cz_link_name%TYPE;
19776 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
19777 v_export_status cz_model_publications.export_status%TYPE;
19778 l_tmp_publication NUMBER;
19779 l_object_type cz_model_publications.object_type%TYPE;
19780 l_reset_publication cz_model_publications.remote_publication_id%TYPE := 0;
19781 no_link_name EXCEPTION;
19782 invalid_object_type EXCEPTION;
19783 template_in_use EXCEPTION;
19784 cannot_del_pup EXCEPTION;
19785 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
19786 BEGIN
19787 fnd_msg_pub.initialize;
19788 x_return_status := FND_API.G_RET_STS_SUCCESS;
19789 x_msg_count := 0;
19790 x_msg_data := '';
19791 fnd_msg_pub.initialize;
19792
19793 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
19794 THEN
19795 l_pub_mode := cz_model_migration_pvt.mode_migration;
19796 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
19797 THEN
19798 l_pub_mode := cz_model_migration_pvt.mode_copy;
19799 END IF;
19800
19801 SELECT server_id, export_status, remote_publication_id, object_type
19802 INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
19803 FROM cz_model_publications
19804 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
19805
19806
19807 --execute the procedure that obsoletes the records
19808 --if the target has been converted into a development instance
19809
19810 IF (v_export_status <> model_publication_obselete) THEN
19811
19812 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
19813 --it is possible that the obsoleting process changed value of the publication record.
19814 --so requery
19815 SELECT server_id, export_status, remote_publication_id, object_type
19816 INTO v_server_id, v_export_status, v_remote_publication_id, l_object_type
19817 FROM cz_model_publications
19818 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.deleted_flag = record_not_deleted;
19819 END IF;
19820
19821 IF (v_export_status = 'PUP')
19822 THEN
19823 RAISE cannot_del_pup;
19824 END IF;
19825
19826 ----check for reset cases
19827 BEGIN
19828 SELECT publication_id
19829 INTO l_reset_publication
19830 FROM cz_model_publications
19831 WHERE cz_model_publications.remote_publication_id = v_remote_publication_id
19832 AND cz_model_publications.server_id = v_server_id
19833 AND cz_model_publications.deleted_flag = record_not_deleted
19834 AND cz_model_publications.export_status = 'PUP'
19835 AND cz_model_publications.publication_mode = l_pub_mode;
19836 EXCEPTION
19837 WHEN OTHERS
19838 THEN
19839 l_reset_publication := 0;
19840 END;
19841
19842 -- if publications are obsolete, their target should not be deleted
19843 IF ((v_server_id = 0) OR(v_export_status = model_publication_obselete))
19844 THEN
19845 v_cz_link_name := ' ';
19846 ELSE
19847 BEGIN
19848 SELECT fndnam_link_name
19849 INTO v_cz_link_name
19850 FROM cz_servers
19851 WHERE cz_servers.server_local_id = v_server_id;
19852 EXCEPTION
19853 WHEN OTHERS
19854 THEN
19855 v_cz_link_name := NULL;
19856 END;
19857
19858 IF (v_cz_link_name IS NULL)
19859 THEN
19860 RAISE no_link_name;
19861 END IF;
19862
19863 v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
19864 END IF;
19865
19866 IF (l_object_type = template_publication)
19867 THEN
19868 ----query to check if template is used
19869 l_tmp_publication := 1;
19870
19871 IF (l_tmp_publication = 1)
19872 THEN
19873 RAISE template_in_use;
19874 END IF;
19875 END IF;
19876
19877 UPDATE cz_model_publications
19878 SET deleted_flag = '1'
19879 WHERE publication_id = publicationid;
19880
19884 DELETE FROM cz_publication_usages
19881 DELETE FROM cz_pb_client_apps
19882 WHERE publication_id = publicationid;
19883
19885 WHERE publication_id = publicationid;
19886
19887 IF (l_reset_publication > 0)
19888 THEN
19889 UPDATE cz_model_publications
19890 SET export_status = 'OK'
19891 WHERE publication_id = l_reset_publication;
19892 END IF;
19893
19894 IF ((v_export_status <> 'PEN') AND(v_remote_publication_id IS NOT NULL))
19895 THEN
19896 EXECUTE IMMEDIATE 'BEGIN'
19897 || ' '
19898 || 'UPDATE cz_model_publications'
19899 || v_cz_link_name
19900 || ''
19901 || ' '
19902 || 'SET deleted_flag = ''1'''
19903 || ' '
19904 || 'WHERE publication_id = '
19905 || v_remote_publication_id
19906 || ';'
19907 || ' '
19908 || 'END;';
19909
19910 EXECUTE IMMEDIATE 'BEGIN'
19911 || ' '
19912 || 'DELETE FROM cz_pb_client_apps'
19913 || v_cz_link_name
19914 || ''
19915 || ' '
19916 || 'WHERE publication_id = '
19917 || v_remote_publication_id
19918 || ';'
19919 || ' '
19920 || 'END;';
19921
19922 EXECUTE IMMEDIATE 'BEGIN'
19923 || ' '
19924 || 'DELETE FROM cz_publication_usages'
19925 || v_cz_link_name
19926 || ''
19927 || ' '
19928 || 'WHERE publication_id = '
19929 || v_remote_publication_id
19930 || ';'
19931 || ' '
19932 || 'END;';
19933 END IF;
19934 EXCEPTION
19935 WHEN no_link_name
19936 THEN
19937 x_return_status := FND_API.G_RET_STS_ERROR;
19938 fnd_message.set_name('CZ', 'CZ_NO_LINK_NAME');
19939 fnd_msg_pub.ADD;
19940 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19941 WHEN cannot_del_pup
19942 THEN
19943 x_return_status := FND_API.G_RET_STS_ERROR;
19944 fnd_message.set_name('CZ', 'CZ_PB_CANNOT_DELETE_PUP');
19945 fnd_message.set_token('PUBID', publicationid);
19946 fnd_msg_pub.ADD;
19947 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19948 WHEN invalid_object_type
19949 THEN
19950 x_return_status := FND_API.G_RET_STS_ERROR;
19951 fnd_message.set_name('CZ', 'CZ_INVALID_PUB_TYPE');
19952 fnd_msg_pub.ADD;
19953 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19954 WHEN template_in_use
19955 THEN
19956 x_msg_data := cz_utils.get_text('CZ_TEMPLATE_IN_USE');
19957 x_return_status := FND_API.G_RET_STS_ERROR;
19958 fnd_message.set_name('CZ', 'CZ_TEMPLATE_IN_USE');
19959 fnd_msg_pub.ADD;
19960 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
19961 WHEN OTHERS
19962 THEN
19963 x_return_status := FND_API.G_RET_STS_ERROR;
19964 x_msg_data := SQLERRM;
19965 END delete_publication;
19966
19967 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
19968 ----------disable publication
19969 PROCEDURE disable_publication(
19970 publicationid IN NUMBER
19971 ,x_return_status OUT NOCOPY VARCHAR2
19972 ,x_msg_count OUT NOCOPY NUMBER
19973 ,x_msg_data OUT NOCOPY VARCHAR2
19974 )
19975 AS
19976 v_server_id cz_model_publications.server_id%TYPE;
19977 v_cz_link_name cz_servers.cz_link_name%TYPE;
19978 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
19979 v_object_type cz_model_publications.object_type%TYPE;
19980 v_export_status cz_model_publications.export_status%TYPE;
19981 cannot_disable_template EXCEPTION;
19982 cannot_disable_publication EXCEPTION;
19983 BEGIN
19984 x_return_status := FND_API.G_RET_STS_SUCCESS;
19985 fnd_msg_pub.initialize;
19986 --execute the procedure that obsoletes the records
19987 --if the target has been converted into a development
19988 --instance
19989 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
19990
19991 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
19992 THEN
19993 RAISE pub_maybe_obsoleted;
19994 END IF;
19995
19996 SELECT object_type, server_id, remote_publication_id, export_status
19997 INTO v_object_type, v_server_id, v_remote_publication_id, v_export_status
19998 FROM cz_model_publications
19999 WHERE cz_model_publications.publication_id = publicationid;
20000
20001 BEGIN
20002 SELECT fndnam_link_name
20003 INTO v_cz_link_name
20004 FROM cz_servers
20005 WHERE cz_servers.server_local_id = v_server_id;
20006 EXCEPTION
20007 WHEN OTHERS
20008 THEN
20012 IF (v_export_status NOT IN('OK', 'PEN'))
20009 v_cz_link_name := NULL;
20010 END;
20011
20013 THEN
20014 RAISE cannot_disable_publication;
20015 END IF;
20016
20017 IF (v_object_type = template_publication)
20018 THEN
20019 RAISE cannot_disable_template;
20020 END IF;
20021
20022 IF (v_server_id = 0)
20023 THEN
20024 v_cz_link_name := '';
20025 ELSE
20026 v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
20027 END IF;
20028
20029 cz_pb_mgr.remote_publication_id := v_remote_publication_id;
20030
20031 UPDATE cz_model_publications
20032 SET disabled_flag = '1'
20033 WHERE publication_id = publicationid;
20034
20035 EXECUTE IMMEDIATE 'BEGIN'
20036 || ' '
20037 || 'UPDATE cz_model_publications'
20038 || v_cz_link_name
20039 || ''
20040 || ' '
20041 || 'SET disabled_flag = ''1'''
20042 || ' '
20043 || 'WHERE publication_id = cz_pb_mgr.remote_publication_id ;'
20044 || ' '
20045 || 'END;';
20046
20047 COMMIT;
20048 EXCEPTION
20049 WHEN cannot_disable_publication
20050 THEN
20051 ----x_msg_data := CZ_UTILS.GET_TEXT('CZ_CANT_DISABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationId);
20052 x_return_status := FND_API.G_RET_STS_ERROR;
20053 fnd_message.set_name('CZ', 'CZ_CANT_DISABLE_PUB');
20054 fnd_message.set_token('STATUS', v_export_status);
20055 fnd_message.set_token('PUBID', publicationid);
20056 fnd_msg_pub.ADD;
20057 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
20058 WHEN pub_maybe_obsoleted
20059 THEN
20060 x_return_status := FND_API.G_RET_STS_ERROR;
20061 WHEN cannot_disable_template
20062 THEN
20063 x_msg_data := cz_utils.get_text('CZ_CANT_DISABLE_TEMPL', 'PUBID', publicationid);
20064 x_return_status := FND_API.G_RET_STS_ERROR;
20065 WHEN OTHERS
20066 THEN
20067 x_return_status := FND_API.G_RET_STS_ERROR;
20068 x_msg_data := SQLERRM;
20069 END disable_publication;
20070
20071 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20072 PROCEDURE get_edit_info(
20073 publicationid IN cz_model_publications.publication_id%TYPE
20074 ,x_product_key IN OUT NOCOPY cz_model_publications.product_key%TYPE
20075 ,x_publication_mode IN OUT NOCOPY VARCHAR2
20076 ,x_server_id IN OUT NOCOPY cz_servers.server_local_id%TYPE
20077 ,x_export_status IN OUT NOCOPY cz_model_publications.export_status%TYPE
20078 ,x_source_target_flag IN OUT NOCOPY cz_model_publications.source_target_flag%TYPE
20079 ,x_remote_publication_id IN OUT NOCOPY cz_model_publications.remote_publication_id%TYPE
20080 )
20081 AS
20082 BEGIN
20083 SELECT product_key, publication_mode, server_id, export_status, source_target_flag, remote_publication_id
20084 INTO x_product_key, x_publication_mode, x_server_id, x_export_status, x_source_target_flag, x_remote_publication_id
20085 FROM cz_model_publications
20086 WHERE cz_model_publications.publication_id = publicationid;
20087 EXCEPTION
20088 WHEN OTHERS
20089 THEN
20090 NULL;
20091 END;
20092
20093 -------->>>>>>>>>>>>>>
20094 PROCEDURE populate_app_tbl(p_application_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_ref)
20095 AS
20096 x NUMBER := 1;
20097 i NUMBER := 0;
20098 y NUMBER := 0;
20099 v_str VARCHAR2(200);
20100 BEGIN
20101 WHILE(x > 0)
20102 LOOP
20103 x := INSTR(p_application_id, ';');
20104
20105 IF (x = 0)
20106 THEN
20107 i := i + 1;
20108 x_app_tbl(i) := p_application_id;
20109 ELSE
20110 x := x - 1;
20111 v_str := SUBSTR(p_application_id, 1, x);
20112 i := i + 1;
20113 x_app_tbl(i) := v_str;
20114 y := LENGTH(p_application_id) -(x + 1);
20115 x := x + 2;
20116 p_application_id := SUBSTR(p_application_id, x, y);
20117 END IF;
20118 END LOOP;
20119 EXCEPTION
20120 WHEN OTHERS
20121 THEN
20122 RAISE;
20123 END;
20124
20125 ------->>>>>>>>>>>>>>>>>>>>>>>>
20126 PROCEDURE populate_lang_tbl(p_lang_id IN OUT NOCOPY VARCHAR2, x_app_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code)
20127 AS
20128 x NUMBER := 1;
20129 i NUMBER := 0;
20130 y NUMBER := 0;
20131 v_str VARCHAR2(200);
20132 BEGIN
20133 WHILE(x > 0)
20134 LOOP
20135 x := INSTR(p_lang_id, ';');
20136
20137 IF (x = 0)
20138 THEN
20139 i := i + 1;
20140 x_app_tbl(i) := p_lang_id;
20141 ELSE
20142 x := x - 1;
20143 v_str := SUBSTR(p_lang_id, 1, x);
20144 i := i + 1;
20145 x_app_tbl(i) := v_str;
20146 y := LENGTH(p_lang_id) -(x + 1);
20147 x := x + 2;
20148 p_lang_id := SUBSTR(p_lang_id, x, y);
20149 END IF;
20150 END LOOP;
20151 EXCEPTION
20155 END;
20152 WHEN OTHERS
20153 THEN
20154 RAISE;
20156
20157 -------->>>>>>>>>>>>>>>>>>
20158 PROCEDURE delete_src_pb_data(publicationid IN cz_model_publications.publication_id%TYPE)
20159 AS
20160 BEGIN
20161 DELETE FROM cz_publication_usages
20162 WHERE cz_publication_usages.publication_id = publicationid;
20163
20164 DELETE FROM cz_pb_client_apps
20165 WHERE cz_pb_client_apps.publication_id = publicationid;
20166
20167 DELETE FROM cz_pb_languages
20168 WHERE cz_pb_languages.publication_id = publicationid;
20169 EXCEPTION
20170 WHEN OTHERS
20171 THEN
20172 RAISE;
20173 END;
20174
20175 ------->>>>>>>>>>>>>>>>>>>>>>
20176 PROCEDURE insert_src_pb_data(
20177 publicationid IN cz_model_publications.publication_id%TYPE
20178 ,p_application_id_tbl IN cz_pb_mgr.t_ref
20179 ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
20180 ,p_usage_id_tbl IN cz_pb_mgr.t_ref
20181 ,x_status IN OUT NOCOPY VARCHAR2
20182 )
20183 AS
20184 v_application_short_name VARCHAR2(50);
20185 BEGIN
20186 FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
20187 LOOP
20188 SELECT application_short_name
20189 INTO v_application_short_name
20190 FROM fnd_application
20191 WHERE application_id = p_application_id_tbl(i);
20192
20193 INSERT INTO cz_pb_client_apps
20194 (publication_id, fnd_application_id, application_short_name, notes
20195 )
20196 VALUES (publicationid, p_application_id_tbl(i), v_application_short_name, NULL
20197 );
20198 END LOOP;
20199
20200 FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
20201 LOOP
20202 INSERT INTO cz_pb_languages
20203 (publication_id, LANGUAGE
20204 )
20205 VALUES (publicationid, p_language_id_tbl(i)
20206 );
20207 END LOOP;
20208
20209 FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
20210 LOOP
20211 INSERT INTO cz_publication_usages
20212 (publication_id, usage_id
20213 )
20214 VALUES (publicationid, p_usage_id_tbl(i)
20215 );
20216 END LOOP;
20217 EXCEPTION
20218 WHEN OTHERS
20219 THEN
20220 x_status := '-1';
20221 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_EDIT_SRC_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20222 log_pb_errors(v_err_message, 1, 'cz_pb_mgr.EDITPB', SQLCODE);
20223 RAISE;
20224 END;
20225
20226 -------->>>>>>>>>>>>>>>>>>>>>
20227 PROCEDURE insert_tgt_pb_data(
20228 p_status_str IN OUT NOCOPY VARCHAR2
20229 ,p_export_status IN cz_model_publications.export_status%TYPE
20230 ,p_tgt_link IN cz_servers.fndnam_link_name%TYPE
20231 ,p_publication_mode IN VARCHAR2
20232 ,p_start_date IN DATE
20233 ,p_disable_date IN DATE
20234 ,p_remote_publication_id IN cz_model_publications.remote_publication_id%TYPE
20235 ,p_application_id_tbl IN cz_pb_mgr.t_ref
20236 ,p_language_id_tbl IN cz_pb_mgr.t_lang_code
20237 ,p_usage_id_tbl IN cz_pb_mgr.t_ref
20238 )
20239 AS
20240 v_application_short_name VARCHAR2(50);
20241 v_edit_str VARCHAR2(2000);
20242 tgt_appl_id number;
20243 BEGIN
20244 IF ((p_status_str <> '-1') AND(p_export_status <> 'PEN'))
20245 THEN
20246 v_edit_str :=
20247 'UPDATE cz_model_publications'
20248 || p_tgt_link
20249 || ' '
20250 || 'SET publication_mode = :1,'
20251 || ' '
20252 || 'applicable_from = :2,'
20253 || ' '
20254 || 'applicable_until = :3'
20255 || ' '
20256 || 'WHERE publication_id = '
20257 || p_remote_publication_id;
20258
20259 EXECUTE IMMEDIATE v_edit_str
20260 USING p_publication_mode, p_start_date, p_disable_date;
20261
20262 v_edit_str :='DELETE FROM cz_publication_usages'||p_tgt_link||' ' ||
20263 'WHERE cz_publication_usages.publication_id = :1';
20264
20265 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
20266
20267
20268 v_edit_str := 'DELETE FROM cz_pb_client_apps'||p_tgt_link||' ' ||
20269 'WHERE cz_pb_client_apps.publication_id = :1';
20270
20271 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
20272
20273 v_edit_str := 'DELETE FROM cz_pb_languages'||p_tgt_link||' ' ||
20274 'WHERE cz_pb_languages.publication_id = :1';
20275
20276 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id;
20277
20278 IF (p_application_id_tbl.COUNT > 0) THEN
20279 FOR i IN p_application_id_tbl.FIRST .. p_application_id_tbl.LAST
20280 LOOP
20281
20282 EXECUTE IMMEDIATE 'SELECT t.application_short_name,t.application_id'
20283 ||' FROM fnd_application s,fnd_application'||p_tgt_link
20284 ||' t WHERE s.application_id =:1 and '
20285 ||' s.APPLICATION_SHORT_NAME=t.APPLICATION_SHORT_NAME'
20286 into v_application_short_name,tgt_appl_id using p_application_id_tbl(i);
20287
20291 EXECUTE IMMEDIATE v_edit_str USING p_remote_publication_id,tgt_appl_id,v_application_short_name;
20288 v_edit_str :='INSERT INTO cz_pb_client_apps'||p_tgt_link||' (publication_id,fnd_application_id,application_short_name)'
20289 || ' ' || ' values (:1,:2,:3)';
20290
20292
20293 END LOOP;
20294 END IF;
20295
20296 IF (p_language_id_tbl.COUNT > 0) THEN
20297 FOR i IN p_language_id_tbl.FIRST .. p_language_id_tbl.LAST
20298 LOOP
20299 v_edit_str :='INSERT INTO cz_pb_languages'||p_tgt_link||' (publication_id,language)' || ' ' ||
20300 'values(:1,:2)';
20301 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_language_id_tbl(i);
20302
20303 END LOOP;
20304 END IF;
20305
20306 IF (p_usage_id_tbl.COUNT > 0) THEN
20307 FOR i IN p_usage_id_tbl.FIRST .. p_usage_id_tbl.LAST
20308 LOOP
20309 v_edit_str :='INSERT INTO cz_publication_usages'||p_tgt_link||' (publication_id,usage_id)' || ' ' ||
20310 'VALUES(:1,:2)';
20311
20312 EXECUTE IMMEDIATE v_edit_str using p_remote_publication_id,p_usage_id_tbl(i);
20313 END LOOP;
20314 END IF;
20315 END IF;
20316 EXCEPTION
20317 WHEN OTHERS
20318 THEN
20319 p_status_str := '-1';
20320 END;
20321
20322 --------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20323 ---------edit publication
20324 PROCEDURE edit_publication(
20325 publicationid IN NUMBER
20326 ,applicationid IN OUT NOCOPY VARCHAR2
20327 ,languageid IN OUT NOCOPY VARCHAR2
20328 ,usageid IN OUT NOCOPY VARCHAR2
20329 ,startdate IN DATE
20330 ,disabledate IN DATE
20331 ,publicationmode IN VARCHAR2
20332 ,x_return_status OUT NOCOPY VARCHAR2
20333 ,x_msg_count OUT NOCOPY NUMBER
20334 ,x_msg_data OUT NOCOPY VARCHAR2
20335 )
20336 AS
20337 v_product_key cz_model_publications.product_key%TYPE;
20338 v_publication_mode cz_model_publications.publication_mode%TYPE;
20339 v_server_id cz_model_publications.server_id%TYPE;
20340 v_source_target_flag cz_model_publications.source_target_flag%TYPE;
20341 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20342 v_export_status cz_model_publications.export_status%TYPE;
20343 v_count NUMBER;
20344 v_application_id VARCHAR2(2000);
20345 v_language_id VARCHAR2(2000);
20346 v_usage_id VARCHAR2(2000);
20347 v_tgt_link VARCHAR2(128);
20348 x NUMBER := 1;
20349 i NUMBER := 0;
20350 y NUMBER := 0;
20351 v_msg VARCHAR2(2000);
20352 status_str VARCHAR2(200) := '0';
20353 no_pub_found EXCEPTION;
20354 l_publication_id NUMBER;
20355 BEGIN
20356 x_return_status := FND_API.G_RET_STS_SUCCESS;
20357 fnd_msg_pub.initialize;
20358 v_application_id_tbl.DELETE;
20359 v_usage_id_tbl.DELETE;
20360 v_language_id_tbl.DELETE;
20361 --execute the procedure that obsoletes the records
20362 --if the target has been converted into a development
20363 --instance
20364 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
20365
20366 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
20367 THEN
20368 RAISE pub_maybe_obsoleted;
20369 END IF;
20370
20371 BEGIN
20372 SELECT publication_id
20373 INTO l_publication_id
20374 FROM cz_model_publications
20375 WHERE cz_model_publications.publication_id = publicationid;
20376 EXCEPTION
20377 WHEN NO_DATA_FOUND
20378 THEN
20379 RAISE no_pub_found;
20380 END;
20381
20382 SELECT COUNT(*)
20383 INTO v_count
20384 FROM cz_model_publications
20385 WHERE cz_model_publications.publication_id = publicationid
20386 AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR', model_publication_obselete);
20387
20388 IF (v_count = 0)
20389 THEN
20390 x_return_status := FND_API.G_RET_STS_ERROR;
20391 x_msg_count := 1;
20392 x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP/' || model_publication_obselete;
20393 ELSE
20394 get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
20395
20396 IF (v_server_id = 0)
20397 THEN
20398 v_tgt_link := '';
20399 ELSE
20400 v_tgt_link := retrieve_db_link(v_server_id);
20401 END IF;
20402
20403 UPDATE cz_model_publications
20404 SET publication_mode = publicationmode
20405 ,applicable_from = startdate
20406 ,applicable_until = disabledate
20407 WHERE publication_id = publicationid;
20408
20409 populate_app_tbl(applicationid, v_application_id_tbl);
20410 populate_app_tbl(usageid, v_usage_id_tbl);
20411 populate_lang_tbl(languageid, v_language_id_tbl);
20412 delete_src_pb_data(publicationid);
20413 insert_src_pb_data(publicationid, v_application_id_tbl, v_language_id_tbl, v_usage_id_tbl, status_str);
20414 insert_tgt_pb_data(status_str
20415 ,v_export_status
20416 ,v_tgt_link
20417 ,publicationmode
20421 ,v_application_id_tbl
20418 ,startdate
20419 ,disabledate
20420 ,v_remote_publication_id
20422 ,v_language_id_tbl
20423 ,v_usage_id_tbl
20424 );
20425
20426 IF (status_str = '-1')
20427 THEN
20428 x_return_status := FND_API.G_RET_STS_ERROR;
20429 x_msg_count := 1;
20430 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20431 ELSE
20432 COMMIT;
20433 END IF;
20434 END IF;
20435 EXCEPTION
20436 WHEN pub_maybe_obsoleted
20437 THEN
20438 x_return_status := FND_API.G_RET_STS_SUCCESS;
20439 WHEN no_pub_found
20440 THEN
20441 x_return_status := FND_API.G_RET_STS_SUCCESS;
20442 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
20443 WHEN OTHERS
20444 THEN
20445 x_return_status := FND_API.G_RET_STS_ERROR;
20446 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20447 END edit_publication;
20448
20449 --------------------------------------------------------
20450 PROCEDURE edit_publication(
20451 publicationid IN NUMBER
20452 ,applicationid IN OUT NOCOPY cz_pb_mgr.t_ref
20453 ,languageid IN OUT NOCOPY cz_pb_mgr.t_lang_code
20454 ,usageid IN OUT NOCOPY cz_pb_mgr.t_ref
20455 ,startdate IN DATE
20456 ,disabledate IN DATE
20457 ,publicationmode IN VARCHAR2
20458 ,x_return_status OUT NOCOPY VARCHAR2
20459 ,x_msg_count OUT NOCOPY NUMBER
20460 ,x_msg_data OUT NOCOPY VARCHAR2
20461 )
20462 AS
20463 v_product_key cz_model_publications.product_key%TYPE;
20464 v_publication_mode cz_model_publications.publication_mode%TYPE;
20465 v_server_id cz_model_publications.server_id%TYPE;
20466 v_source_target_flag cz_model_publications.source_target_flag%TYPE;
20467 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20468 v_export_status cz_model_publications.export_status%TYPE;
20469 v_count NUMBER;
20470 v_application_id VARCHAR2(2000);
20471 v_language_id VARCHAR2(2000);
20472 v_usage_id VARCHAR2(2000);
20473 v_tgt_link VARCHAR2(128);
20474 x NUMBER := 1;
20475 i NUMBER := 0;
20476 y NUMBER := 0;
20477 v_msg VARCHAR2(2000);
20478 status_str VARCHAR2(200) := '0';
20479 no_pub_found EXCEPTION;
20480 l_publication_id NUMBER;
20481 BEGIN
20482 x_return_status := FND_API.G_RET_STS_SUCCESS;
20483 fnd_msg_pub.initialize;
20484 --execute the procedure that obsoletes the records
20485 --if the target has been converted into a development
20486 --instance
20487 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
20488
20489 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
20490 THEN
20491 RAISE pub_maybe_obsoleted;
20492 END IF;
20493
20494 BEGIN
20495 SELECT publication_id
20496 INTO l_publication_id
20497 FROM cz_model_publications
20498 WHERE cz_model_publications.publication_id = publicationid;
20499 EXCEPTION
20500 WHEN NO_DATA_FOUND
20501 THEN
20502 RAISE no_pub_found;
20503 END;
20504
20505 SELECT COUNT(*)
20506 INTO v_count
20507 FROM cz_model_publications
20508 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
20509
20510 IF (v_count = 0)
20511 THEN
20512 x_return_status := FND_API.G_RET_STS_ERROR;
20513 x_msg_count := 1;
20514 x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
20515 ELSE
20516 get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
20517
20518 IF (v_server_id = 0)
20519 THEN
20520 v_tgt_link := '';
20521 ELSE
20522 v_tgt_link := retrieve_db_link(v_server_id);
20523 END IF;
20524
20525 UPDATE cz_model_publications
20526 SET publication_mode = publicationmode
20527 ,applicable_from = startdate
20528 ,applicable_until = disabledate
20529 WHERE publication_id = publicationid;
20530
20531 delete_src_pb_data(publicationid);
20532 insert_src_pb_data(publicationid, applicationid, languageid, usageid, status_str);
20533 insert_tgt_pb_data(status_str
20534 ,v_export_status
20535 ,v_tgt_link
20536 ,publicationmode
20537 ,startdate
20538 ,disabledate
20539 ,v_remote_publication_id
20540 ,applicationid
20541 ,languageid
20542 ,usageid
20543 );
20544
20545 IF (status_str = '-1')
20546 THEN
20547 x_return_status := FND_API.G_RET_STS_ERROR;
20548 x_msg_count := 1;
20552 EXCEPTION
20549 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20550 END IF;
20551 END IF;
20553 WHEN pub_maybe_obsoleted
20554 THEN
20555 x_return_status := FND_API.G_RET_STS_SUCCESS;
20556 WHEN no_pub_found
20557 THEN
20558 x_return_status := FND_API.G_RET_STS_SUCCESS;
20559 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
20560 WHEN OTHERS
20561 THEN
20562 x_return_status := FND_API.G_RET_STS_ERROR;
20563 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20564 END edit_publication;
20565
20566 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20567 ---------edit publication
20568 PROCEDURE edit_tgt_pub(
20569 publicationid IN NUMBER
20570 ,applicationid IN OUT NOCOPY VARCHAR2
20571 ,languageid IN OUT NOCOPY VARCHAR2
20572 ,usageid IN OUT NOCOPY VARCHAR2
20573 ,startdate IN DATE
20574 ,disabledate IN DATE
20575 ,publicationmode IN VARCHAR2
20576 ,x_return_status OUT NOCOPY VARCHAR2
20577 ,x_msg_count OUT NOCOPY NUMBER
20578 ,x_msg_data OUT NOCOPY VARCHAR2
20579 )
20580 AS
20581 v_product_key cz_model_publications.product_key%TYPE;
20582 v_publication_mode cz_model_publications.publication_mode%TYPE;
20583 v_server_id cz_model_publications.server_id%TYPE;
20584 v_source_target_flag cz_model_publications.source_target_flag%TYPE;
20585 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
20586 v_export_status cz_model_publications.export_status%TYPE;
20587 v_count NUMBER;
20588 v_application_id VARCHAR2(2000);
20589 v_language_id VARCHAR2(2000);
20590 v_usage_id VARCHAR2(2000);
20591 v_tgt_link VARCHAR2(128);
20592 x NUMBER := 1;
20593 i NUMBER := 0;
20594 y NUMBER := 0;
20595 v_msg VARCHAR2(2000);
20596 status_str VARCHAR2(200) := '0';
20597 no_pub_found EXCEPTION;
20598 l_publication_id NUMBER;
20599 BEGIN
20600 x_return_status := FND_API.G_RET_STS_SUCCESS;
20601 fnd_msg_pub.initialize;
20602 v_application_id_tbl.DELETE;
20603 v_usage_id_tbl.DELETE;
20604 v_language_id_tbl.DELETE;
20605 --execute the procedure that obsoletes the records
20606 --if the target has been converted into a development
20607 --instance
20608 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
20609
20610 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
20611 THEN
20612 RAISE pub_maybe_obsoleted;
20613 END IF;
20614
20615 BEGIN
20616 SELECT publication_id
20617 INTO l_publication_id
20618 FROM cz_model_publications
20619 WHERE cz_model_publications.publication_id = publicationid;
20620 EXCEPTION
20621 WHEN NO_DATA_FOUND
20622 THEN
20623 RAISE no_pub_found;
20624 END;
20625
20626 SELECT COUNT(*)
20627 INTO v_count
20628 FROM cz_model_publications
20629 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.export_status NOT IN('PRC', 'PUP', 'ERR');
20630
20631 IF (v_count = 0)
20632 THEN
20633 x_return_status := FND_API.G_RET_STS_ERROR;
20634 x_msg_count := 1;
20635 x_msg_data := 'PUBLICATION HAS STATUS /PRC/PUP';
20636 ELSE
20637 get_edit_info(publicationid, v_product_key, v_publication_mode, v_server_id, v_export_status, v_source_target_flag, v_remote_publication_id);
20638
20639 IF (v_server_id = 0)
20640 THEN
20641 v_tgt_link := '';
20642 ELSE
20643 v_tgt_link := retrieve_db_link(v_server_id);
20644 END IF;
20645
20646 -----UPDATE cz_model_publications
20647 -----SET publication_mode = publicationMode,
20648 -----applicable_from = startDate,
20649 -----applicable_until = disableDate
20650 -----WHERE publication_id = publicationId;
20651 populate_app_tbl(applicationid, v_application_id_tbl);
20652 populate_app_tbl(usageid, v_usage_id_tbl);
20653 populate_lang_tbl(languageid, v_language_id_tbl);
20654 -----delete_src_pb_data(publicationId);
20655 -----insert_src_pb_data(publicationId,
20656 ----v_application_id_tbl,
20657 ----v_language_id_tbl,
20658 ----v_usage_id_tbl,
20659 ----status_str);
20660 insert_tgt_pb_data(status_str
20661 ,v_export_status
20662 ,v_tgt_link
20663 ,publicationmode
20664 ,startdate
20665 ,disabledate
20666 ,v_remote_publication_id
20667 ,v_application_id_tbl
20668 ,v_language_id_tbl
20669 ,v_usage_id_tbl
20670 );
20671
20672 IF (status_str = '-1')
20673 THEN
20674 x_return_status := FND_API.G_RET_STS_ERROR;
20675 x_msg_count := 1;
20679 EXCEPTION
20676 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20677 END IF;
20678 END IF;
20680 WHEN pub_maybe_obsoleted
20681 THEN
20682 x_return_status := FND_API.G_RET_STS_SUCCESS;
20683 WHEN no_pub_found
20684 THEN
20685 x_return_status := FND_API.G_RET_STS_SUCCESS;
20686 WHEN OTHERS
20687 THEN
20688 x_return_status := FND_API.G_RET_STS_ERROR;
20689 x_msg_data := cz_utils.get_text('CZ_PB_EDIT_FAILURE_DETAILS', 'PUBID', publicationid, 'SQLERRM', SQLERRM);
20690 END edit_tgt_pub;
20691
20692 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20693 PROCEDURE chk_pub_overlap_internal(
20694 productkey IN VARCHAR2
20695 ,publicationmode IN VARCHAR2
20696 ,applicationid_tbl IN cz_pb_mgr.t_ref
20697 ,languageid_tbl IN cz_pb_mgr.t_lang_code
20698 ,usageid_tbl IN cz_pb_mgr.t_ref
20699 ,serverid IN NUMBER
20700 ,startdate IN DATE
20701 ,disabledate IN DATE
20702 ,sourcetargetflag IN VARCHAR2 ---DEFAULT 'S'
20703 ,pubrecid IN NUMBER
20704 ,publicationidstring IN OUT NOCOPY VARCHAR2
20705 )
20706 AS
20707 x NUMBER := 1;
20708 i NUMBER := 0;
20709 y NUMBER := 0;
20710 k NUMBER := 0;
20711 v_pb_count NUMBER := 1;
20712 publicationid NUMBER;
20713 v_appl_id NUMBER;
20714 v_lang_id VARCHAR2(4);
20715 v_usg_id NUMBER;
20716 v_pub_tbl cz_pb_mgr.t_ref;
20717 v_ret_pb cz_pb_mgr.t_ref;
20718 l_str VARCHAR2(2000);
20719
20720 -- jonatara:bug6375826
20721 -- these temporary tables are introduced to handle the request from CZ_MODELOPERATIONS_PUB.create_publication_request
20722 t_languageId_tbl CZ_PB_MGR.t_lang_code;
20723 t_usageId_tbl CZ_PB_MGR.t_ref;
20724
20725 BEGIN
20726 -- jonatara:bug6375826
20727 -- setting default value to usage_id table and language table if they are NULL
20728
20729 -- setting default usage value as 'Any Usage'
20730 IF usageId_tbl.COUNT = 0 THEN
20731 t_usageId_tbl(0) := -1;
20732 ELSE
20733 t_usageId_tbl := usageId_tbl;
20734 END IF;
20735
20736 -- setting default language value as'US'
20737 IF languageId_tbl.COUNT = 0 THEN
20738 t_languageId_tbl(0) := 'US';
20739 ELSE
20740 t_languageId_tbl := languageId_tbl;
20741 END IF;
20742
20743 publicationid := -1;
20744
20745 IF (applicationid_tbl.COUNT > 0) THEN
20746 FOR i IN applicationid_tbl.FIRST .. applicationid_tbl.LAST
20747 LOOP
20748 v_appl_id := applicationid_tbl(i);
20749 -- jonatara:bug6375826
20750 IF (t_usageid_tbl.COUNT > 0) THEN
20751 FOR j IN t_usageid_tbl.FIRST .. t_usageid_tbl.LAST
20752 LOOP
20753 v_usg_id := t_usageid_tbl(j);
20754 IF (t_languageid_tbl.COUNT > 0) THEN
20755 FOR k IN t_languageid_tbl.FIRST .. t_languageid_tbl.LAST
20756 LOOP
20757 v_lang_id := t_languageid_tbl(k);
20758
20759 IF ((v_appl_id IS NOT NULL) AND(v_usg_id IS NOT NULL) AND(v_lang_id IS NOT NULL))
20760 THEN
20761 BEGIN
20762 l_str :=
20763 'productKey : '
20764 || productkey
20765 || 'mode : '
20766 || publicationmode
20767 || 'serverId: '
20768 || serverid
20769 || '
20770 appl_id: '
20771 || v_appl_id
20772 || ' usage '
20773 || v_usg_id
20774 || 'langid: '
20775 || v_lang_id
20776 || '
20777 startdate : '
20778 || TO_CHAR(startdate, 'mm-dd-yyyy')
20779 || ' disableDate : '
20780 || TO_CHAR(disabledate, 'mm-dd-yyyy');
20781
20782 SELECT DISTINCT publication_id
20783 INTO publicationid
20784 FROM cz_model_applicabilities_v
20785 WHERE product_key = LTRIM(RTRIM(productkey))
20786 AND UPPER(publication_mode) = LTRIM(RTRIM(UPPER(publicationmode)))
20787 AND server_id = serverid
20788 AND fnd_application_id = v_appl_id
20789 AND usage_id = v_usg_id
20790 AND LANGUAGE = v_lang_id
20791 AND deleted_flag = '0'
20792 AND UPPER(source_target_flag) = LTRIM(RTRIM(UPPER(sourcetargetflag)))
20793 AND publication_id <> pubrecid
20794 AND ( ( (start_date >= startdate)
20795 AND (startdate IS NOT NULL)
20796 AND (disabledate IS NOT NULL)
20797 AND (start_date < disabledate)
20798 )
20799 OR ( (disable_date > startdate)
20800 AND (startdate IS NOT NULL)
20801 AND (disabledate IS NOT NULL)
20805 AND (startdate IS NOT NULL)
20802 AND (disable_date <= disabledate)
20803 )
20804 OR ( (start_date <= startdate)
20806 AND (disabledate IS NOT NULL)
20807 AND (disable_date >= disabledate)
20808 )
20809 OR ((start_date <= startdate) AND(startdate < disable_date) AND(disabledate IS NULL))
20810 OR ((disable_date >= disabledate) AND(disabledate > start_date) AND(startdate IS NULL))
20811 );
20812 EXCEPTION
20813 WHEN NO_DATA_FOUND
20814 THEN
20815 publicationid := -1;
20816 WHEN OTHERS
20817 THEN
20818 publicationid := -666;
20819 END;
20820
20821 IF publicationid > 0
20822 THEN
20823 v_pub_tbl(v_pb_count) := publicationid;
20824 v_pb_count := v_pb_count + 1;
20825 END IF;
20826 END IF;
20827 END LOOP;
20828 END IF;
20829 END LOOP;
20830 END IF;
20831 END LOOP;
20832 END IF;
20833
20834 v_ret_pb.DELETE;
20835
20836 IF v_pub_tbl.COUNT > 0
20837 THEN
20838 FOR i IN v_pub_tbl.FIRST .. v_pub_tbl.LAST
20839 LOOP
20840 publicationid := v_pub_tbl(i);
20841
20842 IF (v_ret_pb.COUNT = 0)
20843 THEN
20844 x := 1;
20845 v_ret_pb(x) := publicationid;
20846 ELSE
20847 k := 0;
20848
20849 FOR j IN v_ret_pb.FIRST .. v_ret_pb.LAST
20850 LOOP
20851 IF (v_ret_pb(j) = publicationid)
20852 THEN
20853 k := k + 1;
20854 END IF;
20855 END LOOP;
20856
20857 IF k = 0
20858 THEN
20859 y := v_ret_pb.COUNT + 1;
20860 v_ret_pb(y) := publicationid;
20861 END IF;
20862 END IF;
20863 END LOOP;
20864
20865 IF v_ret_pb.COUNT > 0
20866 THEN
20867 FOR m IN v_ret_pb.FIRST .. v_ret_pb.LAST
20868 LOOP
20869 IF publicationidstring IS NULL
20870 THEN
20871 publicationidstring := TO_CHAR(v_ret_pb(m));
20872 ELSE
20873 publicationidstring := publicationidstring || ';' || TO_CHAR(v_ret_pb(m));
20874 END IF;
20875 END LOOP;
20876 END IF;
20877 ELSIF(publicationid = -666)
20878 THEN
20879 publicationidstring := 'Fatal Error: More than one overlapping publications found';
20880 ELSE
20881 publicationidstring := TO_CHAR(-1);
20882 END IF;
20883 EXCEPTION
20884 WHEN OTHERS
20885 THEN
20886 RAISE;
20887 END chk_pub_overlap_internal;
20888
20889 -------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
20890 ------wrapper for check overlap publication - procedure (to be call from the VB)
20891 PROCEDURE check_publication_overlap(
20892 productkey IN VARCHAR2
20893 ,publicationmode IN VARCHAR2
20894 ,applicationid IN VARCHAR2
20895 ,languageid IN VARCHAR2
20896 ,usageid IN VARCHAR2
20897 ,serverid IN NUMBER
20898 ,startdate IN DATE
20899 ,disabledate IN DATE
20900 ,sourcetargetflag IN VARCHAR2
20901 ,pubrecid IN NUMBER
20902 ,publicationidstring OUT NOCOPY VARCHAR2
20903 )
20904 AS
20905 v_app_id_tbl cz_pb_mgr.t_ref;
20906 v_usg_id_tbl cz_pb_mgr.t_ref;
20907 v_lang_id_tbl cz_pb_mgr.t_lang_code;
20908 v_in_appl_id VARCHAR2(2000);
20909 v_in_lang_id VARCHAR2(2000);
20910 v_in_usg_id VARCHAR2(2000);
20911 l_publicationidstring VARCHAR2(2000);
20912 BEGIN
20913 fnd_msg_pub.initialize;
20914 v_in_appl_id := applicationid;
20915 v_in_lang_id := languageid;
20916 v_in_usg_id := usageid;
20917 populate_app_tbl(v_in_appl_id, v_app_id_tbl);
20918 populate_app_tbl(v_in_usg_id, v_usg_id_tbl);
20919 populate_lang_tbl(v_in_lang_id, v_lang_id_tbl);
20920 chk_pub_overlap_internal(productkey
20921 ,publicationmode
20922 ,v_app_id_tbl
20923 ,v_lang_id_tbl
20924 ,v_usg_id_tbl
20925 ,serverid
20926 ,startdate
20927 ,disabledate
20928 ,sourcetargetflag
20929 ,pubrecid
20930 ,l_publicationidstring
20931 );
20932 publicationidstring := l_publicationidstring;
20933 EXCEPTION
20934 WHEN OTHERS
20935 THEN
20936 RAISE;
20937 END check_publication_overlap;
20938
20939 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
20940 PROCEDURE reset_processing_pubs
20941 IS
20942 v_link_name cz_servers.fndnam_link_name%TYPE;
20946 fnd_msg_pub.initialize;
20943 v_db_link VARCHAR2(255);
20944 l_pub_mode cz_model_publications.publication_mode%TYPE := cz_model_migration_pvt.mode_publication;
20945 BEGIN
20947
20948 IF (cz_pb_mgr.v_session_parameter = cz_model_migration_pvt.migrate_model)
20949 THEN
20950 l_pub_mode := cz_model_migration_pvt.mode_migration;
20951 ELSIF(cz_pb_mgr.v_session_parameter = cz_pb_mgr.model_copy)
20952 THEN
20953 l_pub_mode := cz_model_migration_pvt.mode_copy;
20954 END IF;
20955
20956 FOR i IN (SELECT publication_id, remote_publication_id, server_id
20957 FROM cz_model_publications
20958 WHERE UPPER(export_status) = publication_processing AND deleted_flag = '0')
20959 LOOP
20960 BEGIN
20961 SELECT fndnam_link_name
20962 INTO v_link_name
20963 FROM cz_servers
20964 WHERE server_local_id = i.server_id;
20965
20966 v_db_link := '';
20967
20968 IF v_link_name IS NOT NULL
20969 THEN
20970 v_db_link := '@' || v_link_name;
20971 END IF;
20972
20973 --
20974 -- mark remote publication as deleted
20975 --
20976 EXECUTE IMMEDIATE 'UPDATE CZ_MODEL_PUBLICATIONS' || v_db_link || ' SET deleted_flag=:1' || ' WHERE publication_id = :2'
20977 USING '1', i.remote_publication_id;
20978 EXCEPTION
20979 WHEN NO_DATA_FOUND
20980 THEN
20981 NULL;
20982 WHEN OTHERS
20983 THEN
20984 NULL;
20985 END;
20986 END LOOP;
20987
20988 DELETE FROM cz_pb_model_exports
20989 WHERE publication_id IN(SELECT publication_id
20990 FROM cz_model_publications
20991 WHERE UPPER(export_status) = publication_processing);
20992
20993 UPDATE cz_model_publications
20994 SET export_status = publication_pending
20995 WHERE UPPER(export_status) = publication_processing;
20996
20997 COMMIT;
20998 END;
20999
21000 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21001 -----procedure that validates input dates for republish
21002 PROCEDURE validate_pb_dates(p_start_date IN OUT NOCOPY DATE, p_end_date IN OUT NOCOPY DATE, x_status IN OUT NOCOPY VARCHAR2)
21003 AS
21004 BEGIN
21005 IF (p_start_date > p_end_date)
21006 THEN
21007 x_status := PUBLICATION_ERROR;
21008 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));
21009 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21010 END IF;
21011 EXCEPTION
21012 WHEN OTHERS
21013 THEN
21014 x_status := PUBLICATION_ERROR;
21015 cz_pb_mgr.v_err_message := 'Error during input start and end dates comparison: ' || SQLERRM;
21016 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21017 END validate_pb_dates;
21018
21019 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21020 ------procedure that gets applicability parameters for the
21021 ------publication to be republished
21022 PROCEDURE get_pb_parameters(
21023 p_publication_id IN cz_model_publications.publication_id%TYPE
21024 ,x_applicationid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
21025 ,x_usageid_tbl IN OUT NOCOPY cz_pb_mgr.t_ref
21026 ,x_languageid_tbl IN OUT NOCOPY cz_pb_mgr.t_lang_code
21027 ,x_status IN OUT NOCOPY VARCHAR2
21028 )
21029 AS
21030 BEGIN
21031 SELECT fnd_application_id
21032 BULK COLLECT INTO x_applicationid_tbl
21033 FROM cz_pb_client_apps
21034 WHERE publication_id = p_publication_id;
21035
21036 SELECT usage_id
21037 BULK COLLECT INTO x_usageid_tbl
21038 FROM cz_publication_usages
21039 WHERE publication_id = p_publication_id;
21040
21041 SELECT LANGUAGE
21042 BULK COLLECT INTO x_languageid_tbl
21043 FROM cz_pb_languages
21044 WHERE publication_id = p_publication_id;
21045
21046 IF ((x_applicationid_tbl.COUNT = 0) OR(x_usageid_tbl.COUNT = 0) OR(x_languageid_tbl.COUNT = 0))
21047 THEN
21048 x_status := PUBLICATION_ERROR;
21049 cz_pb_mgr.v_err_message := 'Republish terminated: all applicability parameters are not found for publication: ' || TO_CHAR(p_publication_id);
21050 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21051 END IF;
21052 EXCEPTION
21053 WHEN OTHERS
21054 THEN
21055 x_status := PUBLICATION_ERROR;
21056 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_PARAM_ERROR', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21057 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21058 END get_pb_parameters;
21059
21060 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21061 ------procedure that creates a new publication request
21062 ------for republish
21063 PROCEDURE create_republish_request(
21064 p_publication_id IN cz_model_publications.publication_id%TYPE
21065 ,p_start_date IN DATE
21066 ,p_end_date IN DATE
21067 ,x_new_publication_id IN OUT NOCOPY cz_model_publications.publication_id%TYPE
21068 ,p_repub_str IN VARCHAR2
21072 v_new_publication_id cz_model_publications.publication_id%TYPE;
21069 ,x_status IN OUT NOCOPY VARCHAR2
21070 )
21071 AS
21073 v_old_publication_id cz_model_publications.publication_id%TYPE;
21074 BEGIN
21075 x_status := 'OK';
21076
21077 SELECT cz_model_publications_s.NEXTVAL, p_publication_id
21078 INTO v_new_publication_id, v_old_publication_id
21079 FROM DUAL;
21080
21081 INSERT INTO cz_model_publications
21082 (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21083 ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
21084 ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
21085 ,model_persistent_id, source_target_flag, remote_publication_id, disabled_flag, object_id, object_type)
21086 SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21087 ,p_start_date, p_end_date, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01, user_str02
21088 ,user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
21089 ,remote_publication_id, disabled_flag, object_id, object_type
21090 FROM cz_model_publications
21091 WHERE publication_id = p_publication_id;
21092
21093 v_repub_parameter := pub_model;
21094 insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_status);
21095
21096 IF (p_repub_str = new_copy_str)
21097 THEN
21098 UPDATE cz_model_publications
21099 SET remote_publication_id = NULL
21100 WHERE publication_id = v_new_publication_id;
21101 ELSIF(p_repub_str = repub_str)
21102 THEN
21103 UPDATE cz_model_publications
21104 SET export_status = 'PUP'
21105 WHERE publication_id = p_publication_id;
21106 END IF;
21107
21108 x_new_publication_id := v_new_publication_id;
21109 COMMIT;
21110 EXCEPTION
21111 WHEN OTHERS
21112 THEN
21113 x_status := PUBLICATION_ERROR;
21114 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_CREATE_REQUEST_ERROR', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21115 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21116 END create_republish_request;
21117
21118 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21119 PROCEDURE create_republish_publication(
21120 p_publication_id IN NUMBER
21121 ,x_new_publication_id OUT NOCOPY NUMBER
21122 ,x_return_status OUT NOCOPY VARCHAR2
21123 ,x_msg_count OUT NOCOPY NUMBER
21124 ,x_msg_data OUT NOCOPY VARCHAR2
21125 )
21126 AS
21127 v_new_publication_id cz_model_publications.publication_id%TYPE;
21128 v_old_publication_id cz_model_publications.publication_id%TYPE;
21129 v_source_pb_record cz_model_publications%ROWTYPE;
21130 l_application_id_tbl cz_pb_mgr.t_ref;
21131 l_language_id_tbl cz_pb_mgr.t_lang_code;
21132 l_usage_id_tbl cz_pb_mgr.t_ref;
21133 l_param_status VARCHAR2(2000);
21134 v_upto_date_status VARCHAR2(2000);
21135 v_publicationidstring VARCHAR2(2000);
21136 l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
21137 l_deleted_flag VARCHAR2(1);
21138 l_ui_name cz_ui_defs.NAME%TYPE;
21139 expstatus_exception EXCEPTION;
21140 get_params_exception EXCEPTION;
21141 model_not_upto_date EXCEPTION;
21142 pub_overlap EXCEPTION;
21143 ui_def_id_is_deleted EXCEPTION;
21144 BEGIN
21145 x_return_status := FND_API.G_RET_STS_SUCCESS;
21146 fnd_msg_pub.initialize;
21147 --execute the procedure that obsoletes the records
21148 --if the target has been converted into a development
21149 --instance
21150 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21151
21152 ----check status
21153 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21154 THEN
21155 RAISE pub_maybe_obsoleted;
21156 END IF;
21157
21158 ----get source pb info
21159 SELECT *
21160 INTO v_source_pb_record
21161 FROM cz_model_publications
21162 WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = cz_model_migration_pvt.pub_source_flag;
21163
21164 ----check status
21165 IF (v_source_pb_record.export_status <> 'OK')
21166 THEN
21167 RAISE expstatus_exception;
21168 END IF;
21169
21170 ----get applicability parameters
21171 get_pb_parameters(p_publication_id, l_application_id_tbl, l_usage_id_tbl, l_language_id_tbl, l_param_status);
21172
21173 IF (l_param_status = PUBLICATION_ERROR)
21174 THEN
21175 RAISE get_params_exception;
21176 END IF;
21177
21178 ----check if UI exists
21179 IF (v_source_pb_record.ui_def_id IS NOT NULL)
21180 THEN
21181 BEGIN
21182 SELECT ui_def_id, deleted_flag, NAME
21183 INTO l_ui_def_id, l_deleted_flag, l_ui_name
21184 FROM cz_ui_defs
21185 WHERE cz_ui_defs.ui_def_id = v_source_pb_record.ui_def_id;
21186 EXCEPTION
21187 WHEN NO_DATA_FOUND
21191
21188 THEN
21189 RAISE ui_def_id_is_deleted;
21190 END;
21192 IF (l_deleted_flag = '1')
21193 THEN
21194 RAISE ui_def_id_is_deleted;
21195 END IF;
21196 END IF;
21197
21198 ----check model upto date
21199 model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
21200
21201 IF (v_upto_date_status <> '0')
21202 THEN
21203 RAISE model_not_upto_date;
21204 END IF;
21205
21206 ----check publication overlap
21207 chk_pub_overlap_internal(v_source_pb_record.product_key
21208 ,v_source_pb_record.publication_mode
21209 ,l_application_id_tbl
21210 ,l_language_id_tbl
21211 ,l_usage_id_tbl
21212 ,v_source_pb_record.server_id
21213 ,v_source_pb_record.applicable_from
21214 ,v_source_pb_record.applicable_until
21215 ,v_source_pb_record.source_target_flag
21216 ,v_source_pb_record.publication_id
21217 ,v_publicationidstring
21218 );
21219
21220 IF (v_publicationidstring <> '-1')
21221 THEN
21222 RAISE pub_overlap;
21223 END IF;
21224
21225 SELECT cz_model_publications_s.NEXTVAL, p_publication_id
21226 INTO v_new_publication_id, v_old_publication_id
21227 FROM DUAL;
21228
21229 INSERT INTO cz_model_publications
21230 (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21231 ,applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update, model_last_logic_update
21232 ,model_last_updated, user_str01, user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04
21233 ,model_persistent_id, source_target_flag, remote_publication_id, object_id, object_type, disabled_flag)
21234 SELECT v_new_publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode, ui_def_id, ui_style
21235 ,applicable_from, applicable_until, 'PEN', '0', model_last_struct_update, model_last_logic_update, model_last_updated, user_str01
21236 ,user_str02, user_str03, user_str04, user_num01, user_num02, user_num03, user_num04, model_persistent_id, source_target_flag
21237 ,remote_publication_id, object_id, object_type, disabled_flag
21238 FROM cz_model_publications
21239 WHERE publication_id = p_publication_id;
21240
21241 v_repub_parameter := pub_model;
21242 insert_pb_parameters(v_new_publication_id, v_old_publication_id, v_repub_parameter, ' ', x_return_status);
21243
21244 UPDATE cz_model_publications
21245 SET export_status = 'PUP'
21246 WHERE publication_id = p_publication_id;
21247
21248 x_new_publication_id := v_new_publication_id;
21249 COMMIT;
21250 EXCEPTION
21251 WHEN pub_overlap
21252 THEN
21253 ROLLBACK;
21254 x_return_status := FND_API.G_RET_STS_ERROR;
21255 fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
21256 fnd_message.set_token('PubId', p_publication_id);
21257 fnd_message.set_token('PUBSTR', v_publicationidstring);
21258 fnd_msg_pub.ADD;
21259 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21260 WHEN ui_def_id_is_deleted
21261 THEN
21262 x_return_status := FND_API.G_RET_STS_ERROR;
21263
21264 IF (l_ui_name IS NOT NULL)
21265 THEN
21266 fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
21267 fnd_message.set_token('UIDEFID', l_ui_name);
21268 fnd_msg_pub.ADD;
21269 ELSE
21270 fnd_message.set_name('CZ', 'CZ_UI_DEF_DELETED');
21271 fnd_message.set_token('UIDEFID', v_source_pb_record.ui_def_id);
21272 fnd_msg_pub.ADD;
21273 END IF;
21274
21275 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21276 WHEN model_not_upto_date
21277 THEN
21278 ROLLBACK;
21279 x_return_status := FND_API.G_RET_STS_ERROR;
21280 fnd_message.set_name('CZ', 'CZ_PB_MODEL_NOT_UPTO_DATE');
21281 fnd_message.set_token('PubId', p_publication_id);
21282 fnd_message.set_token('MODELUPTODATE', v_upto_date_status);
21283 fnd_msg_pub.ADD;
21284 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21285 WHEN get_params_exception
21286 THEN
21287 ROLLBACK;
21288 x_return_status := FND_API.G_RET_STS_ERROR;
21289 fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
21290 fnd_message.set_token('PubId', p_publication_id);
21291 fnd_msg_pub.ADD;
21292 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21293 WHEN expstatus_exception
21294 THEN
21295 ROLLBACK;
21296 x_return_status := FND_API.G_RET_STS_ERROR;
21297 fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERR');
21298 fnd_message.set_token('PubId', p_publication_id);
21299 fnd_message.set_token('EXPORT STATUS', v_source_pb_record.export_status);
21300 fnd_msg_pub.ADD;
21301 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21302 cz_pb_mgr.v_republish_model := no_mode;
21306 WHEN OTHERS
21303 WHEN pub_maybe_obsoleted
21304 THEN
21305 x_return_status := fnd_api.g_ret_sts_unexp_error;
21307 THEN
21308 ROLLBACK;
21309 x_return_status := fnd_api.g_ret_sts_unexp_error;
21310 fnd_message.set_name('CZ', 'CZ_PB_CREATE_REQUEST_ERROR');
21311 fnd_message.set_token('PubId', p_publication_id);
21312 fnd_message.set_token('SQLERRM', SQLERRM);
21313 fnd_msg_pub.ADD;
21314 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21315 END create_republish_publication;
21316
21317 ------------>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21318 ------procedure that resets the start and end dates
21319 ------of the original publication
21320 PROCEDURE reset_pb_dates(
21321 p_publicationid IN cz_model_publications.publication_id%TYPE
21322 ,x_applicable_from IN OUT NOCOPY DATE
21323 ,x_applicable_until IN OUT NOCOPY DATE
21324 ,x_orig_start_date IN OUT NOCOPY DATE
21325 ,x_orig_end_date IN OUT NOCOPY DATE
21326 ,x_start_date IN OUT NOCOPY DATE
21327 ,x_end_date IN OUT NOCOPY DATE
21328 ,x_reset_str IN OUT NOCOPY VARCHAR2
21329 ,x_status IN OUT NOCOPY VARCHAR2
21330 )
21331 AS
21332 v_db_link cz_servers.fndnam_link_name%TYPE;
21333 v_server_id cz_model_publications.server_id%TYPE;
21334 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21335 reset_date_error EXCEPTION;
21336 BEGIN
21337 SELECT applicable_from, applicable_until, server_id, remote_publication_id
21338 INTO v_repub_appl_from, v_repub_appl_until, v_server_id, v_remote_publication_id
21339 FROM cz_model_publications
21340 WHERE publication_id = p_publicationid;
21341
21342 x_orig_start_date := v_repub_appl_from;
21343 x_orig_end_date := v_repub_appl_until;
21344
21345 IF ((x_start_date = v_repub_appl_from) AND(x_end_date = v_repub_appl_until))
21346 THEN
21347 x_reset_str := repub_str;
21348 ELSIF( ((x_start_date > v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
21349 OR ((x_start_date < v_repub_appl_from) AND(x_end_date < v_repub_appl_from))
21350 )
21351 THEN
21352 x_reset_str := new_copy_str;
21353 ELSIF((x_start_date > v_repub_appl_from) AND(x_start_date < v_repub_appl_until) AND(x_end_date > v_repub_appl_until))
21354 THEN
21355 v_repub_appl_until := x_start_date;
21356 v_repub_appl_until := x_start_date;
21357 x_reset_str := new_copy_str;
21358 cz_pb_mgr.v_republish_model := new_copy_mode;
21359 ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date > v_repub_appl_until))
21360 THEN
21361 x_reset_str := repub_str;
21362 ELSIF((x_start_date = v_repub_appl_from) AND(x_end_date < v_repub_appl_until))
21363 THEN
21364 v_repub_appl_from := x_end_date;
21365 x_reset_str := new_copy_str;
21366 cz_pb_mgr.v_republish_model := new_copy_mode;
21367 ELSIF( (x_start_date < v_repub_appl_from)
21368 AND (x_start_date < v_repub_appl_until)
21369 AND (x_end_date > v_repub_appl_from)
21370 AND (x_end_date < v_repub_appl_until)
21371 )
21372 THEN
21373 v_repub_appl_from := x_end_date;
21374 x_reset_str := new_copy_str;
21375 cz_pb_mgr.v_republish_model := new_copy_mode;
21376 ELSIF( (x_start_date < v_repub_appl_from)
21377 AND (x_start_date < v_repub_appl_until)
21378 AND (x_end_date > v_repub_appl_from)
21379 AND (x_end_date > v_repub_appl_until)
21380 )
21381 THEN
21382 x_reset_str := repub_str;
21383 v_repub_appl_from := x_start_date;
21384 v_repub_appl_until := x_end_date;
21385 ELSIF( (x_start_date > v_repub_appl_from)
21386 AND (x_start_date < v_repub_appl_until)
21387 AND (x_end_date > v_repub_appl_from)
21388 AND (x_end_date < v_repub_appl_until)
21389 )
21390 THEN
21391 v_repub_appl_from := x_start_date;
21392 v_repub_appl_until := x_end_date;
21393 x_reset_str := repub_str;
21394 ELSE
21395 RAISE reset_date_error;
21396 END IF;
21397
21398 UPDATE cz_model_publications
21399 SET applicable_from = v_repub_appl_from
21400 ,applicable_until = v_repub_appl_until
21401 WHERE publication_id = p_publicationid;
21402
21403 x_applicable_from := v_repub_appl_from;
21404 x_applicable_until := v_repub_appl_until;
21405 COMMIT;
21406 EXCEPTION
21407 WHEN reset_date_error
21408 THEN
21409 x_status := PUBLICATION_ERROR;
21410 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PubId', p_publicationid, 'SQLERRM', SQLERRM);
21411 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21412 WHEN OTHERS
21413 THEN
21414 x_status := PUBLICATION_ERROR;
21415 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_DATES_ERROR', 'PubId', p_publicationid, 'SQLERRM', SQLERRM);
21416 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21417 END reset_pb_dates;
21418
21419 ---------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21420 PROCEDURE reset_repub_changes(
21421 p_publication_id IN cz_model_publications.publication_id%TYPE
21422 ,p_orig_start_date IN DATE
21423 ,p_orig_end_date IN DATE
21424 ,x_reset_status IN OUT NOCOPY VARCHAR2
21428 UPDATE cz_model_publications
21425 )
21426 AS
21427 BEGIN
21429 SET cz_model_publications.applicable_from = p_orig_start_date
21430 ,cz_model_publications.applicable_until = p_orig_end_date
21431 ,cz_model_publications.deleted_flag = '0'
21432 ,cz_model_publications.export_status = 'OK'
21433 WHERE cz_model_publications.publication_id = p_publication_id;
21434
21435 COMMIT;
21436 EXCEPTION
21437 WHEN OTHERS
21438 THEN
21439 x_reset_status := PUBLICATION_ERROR;
21440 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_RESET_PB_CHANGES', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21441 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21442 END reset_repub_changes;
21443
21444 ----------->>>>>>>>>>>>>>>>>>>>>>>>>>>>
21445 ------procedure that republishes a model
21446 PROCEDURE republish_model(
21447 p_publication_id IN OUT NOCOPY NUMBER
21448 ,p_start_date IN OUT NOCOPY DATE
21449 ,p_end_date IN OUT NOCOPY DATE
21450 ,x_run_id OUT NOCOPY NUMBER
21451 ,x_status OUT NOCOPY cz_model_publications.export_status%TYPE
21452 )
21453 AS
21454 v_upto_date_status VARCHAR2(2000);
21455 v_source_pb_record cz_model_publications%ROWTYPE;
21456 v_new_publication_id cz_model_publications.publication_id%TYPE;
21457 v_publicationidstring VARCHAR2(2000);
21458 v_reset_str VARCHAR2(100);
21459 v_reset_status VARCHAR2(2000);
21460 v_repub_status VARCHAR2(2000);
21461 v_param_status VARCHAR2(2000);
21462 v_publication_status VARCHAR2(3);
21463 v_create_status VARCHAR2(3);
21464 common_exception EXCEPTION;
21465 BEGIN
21466 initialize_pb_parameters(p_publication_id);
21467 ----initialize global republish parameter to be used in publish model
21468 cz_pb_mgr.v_republish_model := no_mode;
21469 x_status := 'OK';
21470 v_repub_appl_from := NULL;
21471 v_repub_appl_until := NULL;
21472 v_repub_remote_pb_id := 0;
21473
21474 ---get run id
21475 SELECT cz_xfr_run_infos_s.NEXTVAL
21476 INTO cz_pb_mgr.v_pb_run_id
21477 FROM DUAL;
21478
21479 x_run_id := cz_pb_mgr.v_pb_run_id;
21480
21481 ----get source pb info
21482 SELECT *
21483 INTO v_source_pb_record
21484 FROM cz_model_publications
21485 WHERE publication_id = p_publication_id AND deleted_flag = record_not_deleted AND source_target_flag = g_source_flag;
21486
21487 ----capture original values
21488 v_repub_remote_pb_id := v_source_pb_record.remote_publication_id;
21489 v_orig_start_date := v_source_pb_record.applicable_from;
21490 v_orig_end_date := v_source_pb_record.applicable_until;
21491 ----check status
21492 check_export_status(v_source_pb_record.export_status, cz_republish, x_status);
21493
21494 IF (x_status = PUBLICATION_ERROR)
21495 THEN
21496 RAISE common_exception;
21497 END IF;
21498
21499 ----get applicability parameters
21500 get_pb_parameters(p_publication_id, v_application_id_tbl, v_usage_id_tbl, v_language_id_tbl, v_param_status);
21501
21502 IF (v_param_status = PUBLICATION_ERROR)
21503 THEN
21504 RAISE common_exception;
21505 END IF;
21506
21507 ----validate input start and end dates
21508 IF (p_start_date IS NULL)
21509 THEN
21510 p_start_date := v_source_pb_record.applicable_from;
21511 END IF;
21512
21513 IF (p_end_date IS NULL)
21514 THEN
21515 p_end_date := v_source_pb_record.applicable_until;
21516 END IF;
21517
21518 validate_pb_dates(p_start_date, p_end_date, x_status);
21519
21520 IF (x_status = PUBLICATION_ERROR)
21521 THEN
21522 RAISE common_exception;
21523 END IF;
21524
21525 ----check model upto date
21526 model_upto_date(v_source_pb_record.object_id, v_source_pb_record.ui_def_id, v_upto_date_status);
21527
21528 IF (v_upto_date_status <> '0')
21529 THEN
21530 cz_pb_mgr.v_err_message := v_upto_date_status;
21531 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21532 RAISE common_exception;
21533 END IF;
21534
21535 ---reset pb dates
21536 reset_pb_dates(p_publication_id
21537 ,v_repub_appl_from
21538 ,v_repub_appl_until
21539 ,v_orig_start_date
21540 ,v_orig_end_date
21541 ,p_start_date
21542 ,p_end_date
21543 ,v_reset_str
21544 ,v_reset_status
21545 );
21546
21547 IF (v_reset_status = PUBLICATION_ERROR)
21548 THEN
21549 RAISE common_exception;
21550 END IF;
21551
21552 ----check publication overlap
21553 chk_pub_overlap_internal(v_source_pb_record.product_key
21554 ,v_source_pb_record.publication_mode
21555 ,v_application_id_tbl
21556 ,v_language_id_tbl
21557 ,v_usage_id_tbl
21558 ,v_source_pb_record.server_id
21559 ,p_start_date
21560 ,p_end_date
21564 );
21561 ,v_source_pb_record.source_target_flag
21562 ,v_source_pb_record.publication_id
21563 ,v_publicationidstring
21565
21566 IF (v_publicationidstring <> '-1')
21567 THEN
21568 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_OVERLAP', 'PubId', p_publication_id, 'PUBSTR', v_publicationidstring);
21569 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21570 RAISE common_exception;
21571 ELSE
21572 ----create new publication request
21573 create_republish_request(p_publication_id, p_start_date, p_end_date, v_new_publication_id, v_reset_str, v_create_status);
21574
21575 IF (v_create_status = PUBLICATION_ERROR)
21576 THEN
21577 RAISE common_exception;
21578 END IF;
21579
21580 -----publish model
21581 publish_model(v_new_publication_id, x_run_id, v_publication_status);
21582 END IF;
21583
21584 IF (v_publication_status = PUBLICATION_ERROR)
21585 THEN
21586 reset_repub_changes(p_publication_id, v_orig_start_date, v_orig_end_date, v_repub_status);
21587 RAISE common_exception;
21588 ELSE
21589 cz_pb_mgr.v_msg_tbl.DELETE;
21590 cz_pb_mgr.v_pb_run_id := x_run_id;
21591 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_SUCCESS', 'PubId', p_publication_id);
21592 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUB_MODEL', SQLCODE);
21593 log_pb_trace;
21594 END IF;
21595
21596 x_status := v_publication_status;
21597 cz_pb_mgr.v_republish_model := no_mode;
21598 EXCEPTION
21599 WHEN common_exception
21600 THEN
21601 ROLLBACK;
21602 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PubId', p_publication_id);
21603 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21604 x_status := PUBLICATION_ERROR;
21605 log_pb_trace;
21606 cz_pb_mgr.v_republish_model := no_mode;
21607 WHEN OTHERS
21608 THEN
21609 x_status := PUBLICATION_ERROR;
21610 cz_pb_mgr.v_republish_model := no_mode;
21611 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_REPUBLISH_FAILURE', 'PubId', p_publication_id, 'SQLERRM', SQLERRM);
21612 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.REPUBLISH_MODEL', SQLCODE);
21613 log_pb_trace;
21614 END republish_model;
21615
21616 --------------->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
21617 ----------enable publication
21618 PROCEDURE enable_publication(
21619 publicationid IN NUMBER
21620 ,x_return_status OUT NOCOPY VARCHAR2
21621 ,x_msg_count OUT NOCOPY NUMBER
21622 ,x_msg_data OUT NOCOPY VARCHAR2
21623 )
21624 AS
21625 v_server_id cz_model_publications.server_id%TYPE;
21626 v_cz_link_name cz_servers.cz_link_name%TYPE;
21627 v_remote_publication_id cz_model_publications.remote_publication_id%TYPE;
21628 v_app_id_tbl cz_pb_mgr.t_ref;
21629 v_usg_id_tbl cz_pb_mgr.t_ref;
21630 v_lang_id_tbl cz_pb_mgr.t_lang_code;
21631 v_object_type cz_model_publications.object_type%TYPE;
21632 l_status VARCHAR2(3);
21633 l_product_key cz_model_publications.product_key%TYPE;
21634 l_applicable_from cz_model_publications.applicable_from%TYPE;
21635 l_applicable_until cz_model_publications.applicable_until%TYPE;
21636 l_source_target_flag cz_model_publications.source_target_flag%TYPE;
21637 l_publication_mode cz_model_publications.publication_mode%TYPE;
21638 v_export_status cz_model_publications.export_status%TYPE;
21639 l_publicationidstring VARCHAR2(2000);
21640 cannot_enable_template EXCEPTION;
21641 get_params_exception EXCEPTION;
21642 pub_overlap EXCEPTION;
21643 cannot_enable_publication EXCEPTION;
21644 BEGIN
21645 x_return_status := FND_API.G_RET_STS_SUCCESS;
21646 fnd_msg_pub.initialize;
21647 --execute the procedure that obsoletes the records
21648 --if the target has been converted into a development
21649 --instance
21650 cz_model_migration_pvt.obsolete_nonpublishable('T', x_return_status, x_msg_count, x_msg_data);
21651
21652 IF (x_return_status <> FND_API.G_RET_STS_SUCCESS)
21653 THEN
21654 RAISE pub_maybe_obsoleted;
21655 END IF;
21656
21657 BEGIN
21658 SELECT export_status
21659 INTO v_export_status
21660 FROM cz_model_publications
21661 WHERE cz_model_publications.publication_id = publicationid;
21662 EXCEPTION
21663 WHEN OTHERS
21664 THEN
21665 v_export_status := NULL;
21666 END;
21667
21668 IF (v_export_status = model_publication_obselete)
21669 THEN
21670 RAISE cannot_enable_template;
21671 END IF;
21672
21673 SELECT object_type, server_id, remote_publication_id, product_key, applicable_from, applicable_until, source_target_flag
21674 ,publication_mode, v_export_status
21675 INTO v_object_type, v_server_id, v_remote_publication_id, l_product_key, l_applicable_from, l_applicable_until, l_source_target_flag
21676 ,l_publication_mode, v_export_status
21677 FROM cz_model_publications
21678 WHERE cz_model_publications.publication_id = publicationid AND cz_model_publications.disabled_flag = '1';
21679
21680 BEGIN
21681 SELECT fndnam_link_name
21685 EXCEPTION
21682 INTO v_cz_link_name
21683 FROM cz_servers
21684 WHERE cz_servers.server_local_id = v_server_id;
21686 WHEN OTHERS
21687 THEN
21688 v_cz_link_name := NULL;
21689 END;
21690
21691 IF (v_object_type = template_publication)
21692 THEN
21693 RAISE cannot_enable_template;
21694 END IF;
21695
21696 IF (v_export_status NOT IN('OK', 'PEN'))
21697 THEN
21698 RAISE cannot_enable_publication;
21699 END IF;
21700
21701 get_pb_parameters(publicationid, v_app_id_tbl, v_usg_id_tbl, v_lang_id_tbl, l_status);
21702
21703 IF (l_status = PUBLICATION_ERROR)
21704 THEN
21705 RAISE get_params_exception;
21706 END IF;
21707
21708 chk_pub_overlap_internal(l_product_key
21709 ,l_publication_mode
21710 ,v_app_id_tbl
21711 ,v_lang_id_tbl
21712 ,v_usg_id_tbl
21713 ,v_server_id
21714 ,l_applicable_from
21715 ,l_applicable_until
21716 ,l_source_target_flag
21717 ,publicationid
21718 ,l_publicationidstring
21719 );
21720
21721 IF (l_publicationidstring <> '-1')
21722 THEN
21723 RAISE pub_overlap;
21724 END IF;
21725
21726 IF (v_server_id = 0)
21727 THEN
21728 v_cz_link_name := '';
21729 ELSE
21730 v_cz_link_name := '@' || LTRIM(RTRIM(v_cz_link_name));
21731 END IF;
21732
21733 UPDATE cz_model_publications
21734 SET disabled_flag = '0'
21735 WHERE publication_id = publicationid;
21736
21737 cz_pb_mgr.remote_publication_id := v_remote_publication_id;
21738
21739 EXECUTE IMMEDIATE 'BEGIN'
21740 || ' '
21741 || 'UPDATE cz_model_publications'
21742 || v_cz_link_name
21743 || ' '
21744 || 'SET disabled_flag = ''0'''
21745 || ' '
21746 || 'WHERE publication_id = cz_pb_mgr.remote_publication_id ;'
21747 || ' '
21748 || 'END;';
21749
21750 COMMIT;
21751 EXCEPTION
21752 WHEN NO_DATA_FOUND
21753 THEN
21754 NULL;
21755 WHEN cannot_enable_publication
21756 THEN
21757 x_return_status := FND_API.G_RET_STS_ERROR;
21758 x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_PUB', 'STATUS', v_export_status, 'PUBID', publicationid);
21759 fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_PUB');
21760 fnd_message.set_token('STATUS', v_export_status);
21761 fnd_message.set_token('PUBID', publicationid);
21762 fnd_msg_pub.ADD;
21763 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21764 WHEN cannot_enable_template
21765 THEN
21766 x_msg_data := cz_utils.get_text('CZ_CANT_ENABLE_TEMPL', 'PUBID', publicationid);
21767 x_return_status := FND_API.G_RET_STS_ERROR;
21768 fnd_message.set_name('CZ', 'CZ_CANT_ENABLE_TEMPL');
21769 fnd_message.set_token('PUBID', publicationid);
21770 fnd_msg_pub.ADD;
21771 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21772 WHEN get_params_exception
21773 THEN
21774 ROLLBACK;
21775 x_return_status := FND_API.G_RET_STS_ERROR;
21776 fnd_message.set_name('CZ', 'CZ_PB_GET_PARAMS_ERROR');
21777 fnd_message.set_token('PUBID', publicationid);
21778 fnd_msg_pub.ADD;
21779 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21780 WHEN pub_overlap
21781 THEN
21782 ROLLBACK;
21783 x_return_status := FND_API.G_RET_STS_ERROR;
21784 fnd_message.set_name('CZ', 'CZ_PB_OVERLAP');
21785 fnd_message.set_token('PUBID', publicationid);
21786 fnd_message.set_token('PUBSTR', l_publicationidstring);
21787 fnd_msg_pub.ADD;
21788 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
21789 WHEN pub_maybe_obsoleted
21790 THEN
21791 x_return_status := FND_API.G_RET_STS_ERROR;
21792 WHEN OTHERS
21793 THEN
21794 x_return_status := FND_API.G_RET_STS_ERROR;
21795 x_msg_data := SQLERRM;
21796 END enable_publication;
21797
21798 ---------------------------------
21799 --------function that returns the name of a project that is passed in as
21800 --------a parameter. IF the name already exists, then the string "Copy of ()"
21801 --------is appended before the original name
21802 --------this function is used in deep_model_copy
21803 --------
21804 FUNCTION copy_name(p_devl_project_id IN NUMBER)
21805 RETURN VARCHAR2
21806
21807 AS
21808
21809 original_name cz_devl_projects.name%TYPE;
21810 copy_name cz_devl_projects.name%TYPE;
21811 L PLS_INTEGER := 0;
21812 x_error BOOLEAN := FALSE;
21813
21814 BEGIN
21815 BEGIN
21816 SELECT name
21817 INTO original_name
21818 FROM cz_rp_entries
21819 WHERE object_id = p_devl_project_id
21820 AND object_type = 'PRJ'
21821 AND deleted_flag = '0';
21825 WHEN OTHERS THEN
21822 EXCEPTION
21823 WHEN NO_DATA_FOUND THEN
21824 original_name := NULL;
21826 original_name := NULL;
21827 END;
21828
21829 IF (original_name IS NOT NULL) THEN
21830
21831 BEGIN
21832
21833 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)
21834 INTO L
21835 FROM cz_rp_entries
21836 WHERE name LIKE 'Copy (%) of '||original_name
21837 and instr(SUBSTR(name, 1, instr(name,original_name, -1, 1)-1),'Copy (',7)=0
21838 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'
21839 AND deleted_flag = '0' and object_type='PRJ';
21840
21841 -- L := to_number(substr(copy_name,7,instr(copy_name,')',7)-7));
21842
21843 EXCEPTION
21844 WHEN NO_DATA_FOUND THEN
21845 L := 0;
21846 END;
21847 END IF;
21848
21849 L := L + 1;
21850 copy_name := 'Copy ('||to_char(L)||') of '||original_name;
21851 RETURN copy_name ;
21852 EXCEPTION
21853 WHEN OTHERS THEN
21854 -- x_error:= CZ_UTILS.REPORT(SQLERRM,1,'CZ_UTILS.COPY_NAME',-222);
21855 log_report('cz_utils', 'copy_name', 1, SQLERRM, fnd_log.LEVEL_UNEXPECTED);
21856 copy_name := 'ERROR';
21857 RETURN copy_name ;
21858 END copy_name;
21859
21860 ----------------------------------------------------------------------------------
21861 PROCEDURE create_publication_request(
21862 p_model_id IN NUMBER
21863 ,p_ui_def_id IN NUMBER
21864 ,p_publication_mode IN VARCHAR2
21865 ,p_server_id IN NUMBER
21866 ,p_appl_id_tbl IN cz_pb_mgr.t_ref
21867 ,p_usg_id_tbl IN cz_pb_mgr.t_ref
21868 ,p_lang_tbl IN cz_pb_mgr.t_lang_code
21869 ,p_start_date IN DATE
21870 ,p_end_date IN DATE
21871 ,x_publication_id OUT NOCOPY NUMBER
21872 ,x_return_status OUT NOCOPY VARCHAR2
21873 ,x_msg_count OUT NOCOPY NUMBER
21874 ,x_msg_data OUT NOCOPY VARCHAR2
21875 )
21876 IS
21877 l_model_id cz_rp_entries.object_id%TYPE;
21878 l_publication_mode cz_model_publications.publication_mode%TYPE;
21879 l_usg_id cz_publication_usages.usage_id%TYPE;
21880 l_lang_code cz_pb_languages.LANGUAGE%TYPE;
21881 l_start_date DATE;
21882 l_end_date DATE;
21883 l_last_struct_update DATE;
21884 l_last_logic_update DATE;
21885 l_last_updated DATE;
21886 l_persistent_project_id cz_devl_projects.persistent_project_id%TYPE;
21887 v_publicationidstring VARCHAR2(2000);
21888 v_upto_date_status VARCHAR2(2000);
21889 l_ui_style cz_ui_defs.ui_style%TYPE;
21890 v_new_publication_id cz_model_publications.publication_id%TYPE;
21891 l_inventory_item_id cz_devl_projects.inventory_item_id%TYPE;
21892 l_organization_id cz_devl_projects.organization_id%TYPE;
21893 l_product_key cz_devl_projects.product_key%TYPE;
21894 l_ui_def_id cz_ui_defs.ui_def_id%TYPE;
21895 l_short_name cz_pb_client_apps.application_short_name%TYPE;
21896 pub_overlap EXCEPTION;
21897 no_model_id EXCEPTION;
21898 no_model_exists EXCEPTION;
21899 no_ui_exists EXCEPTION;
21900 invalid_pb_mode EXCEPTION;
21901 no_appl_id EXCEPTION;
21902 model_not_upto_date EXCEPTION;
21903 no_ui_id EXCEPTION;
21904 product_key_is_null EXCEPTION;
21905 PUB_SOURCE_FLAG CONSTANT VARCHAR2(1) := 'S';
21906 BEGIN
21907 x_return_status := FND_API.G_RET_STS_SUCCESS;
21908 fnd_msg_pub.initialize;
21909
21910 -----check if model id passed in is not null
21911 -----if not null then check if the model exists and is
21912 -----a source model
21913 IF (p_model_id IS NULL)
21914 THEN
21915 RAISE no_model_id;
21916 ELSE
21917 BEGIN
21918 SELECT devl_project_id, product_key, inventory_item_id, organization_id, last_struct_update, last_logic_update, last_update_date
21919 ,persistent_project_id
21920 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
21921 ,l_persistent_project_id
21922 FROM cz_devl_projects
21923 WHERE cz_devl_projects.devl_project_id = p_model_id
21924 AND cz_devl_projects.deleted_flag = '0'
21925 AND cz_devl_projects.devl_project_id IN(SELECT object_id
21926 FROM cz_rp_entries
21927 WHERE cz_rp_entries.object_type = 'PRJ' AND cz_rp_entries.deleted_flag = '0');
21928 EXCEPTION
21929 WHEN NO_DATA_FOUND
21930 THEN
21931 RAISE no_model_exists;
21932 END;
21933 END IF;
21934
21935 IF (l_product_key IS NULL)
21936 THEN
21937 RAISE product_key_is_null;
21938 END IF;
21939
21940 -----verify that the ui_def_id passed in is valid
21941 -----If a ui_def is passed in verify that it belongs to the
21942 ----- model that is being published.
21943 IF (p_ui_def_id < 0)
21944 THEN
21945 RAISE no_ui_id;
21946 ELSIF(p_ui_def_id IS NULL)
21947 THEN
21948 l_ui_def_id := NULL;
21949 l_ui_style := NULL;
21950 ELSE
21951 BEGIN
21952 SELECT ui_def_id, ui_style
21956 EXCEPTION
21953 INTO l_ui_def_id, l_ui_style
21954 FROM cz_ui_defs
21955 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';
21957 WHEN NO_DATA_FOUND
21958 THEN
21959 RAISE no_ui_exists;
21960 END;
21961 END IF;
21962
21963 ----verify that the publication mode that is passed in
21964 ---- is a valid one. If NULL is passed then
21965 ----- default the mode to 'P'
21966 l_publication_mode := p_publication_mode;
21967
21968 IF (l_publication_mode IS NULL)
21969 THEN
21970 l_publication_mode := 'P';
21971 ELSIF(UPPER(l_publication_mode) NOT IN('P', 'T', cz_model_migration_pvt.mode_migration))
21972 THEN
21973 RAISE invalid_pb_mode;
21974 END IF;
21975
21976 IF (UPPER(l_publication_mode) = cz_model_migration_pvt.mode_migration)
21977 THEN
21978 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.mig_source_flag;
21979 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.mig_target_flag;
21980 ELSE
21981 cz_pb_mgr.g_source_flag := cz_model_migration_pvt.pub_source_flag;
21982 cz_pb_mgr.g_target_flag := cz_model_migration_pvt.pub_target_flag;
21983 END IF;
21984
21985 ----check that atleast one application id
21986 ----- is passed
21987 IF (p_appl_id_tbl.COUNT = 0)
21988 THEN
21989 RAISE no_appl_id;
21990 END IF;
21991
21992 ----if no usage is passed the default to
21993 ---- any usage
21994 IF (p_usg_id_tbl.COUNT = 0)
21995 THEN
21996 l_usg_id := -1;
21997 END IF;
21998
21999 ----- if no language is passed then default to
22000 ------AMERICAN ENGLISH
22001 IF (p_lang_tbl.COUNT = 0)
22002 THEN
22003 l_lang_code := 'US';
22004 END IF;
22005
22006 -----if no start or end dates
22007 ---- are passed, then default to epoch begin and epoch end respectively
22008 IF (p_start_date IS NULL)
22009 THEN
22010 l_start_date := cz_utils.epoch_begin;
22011 ELSE
22012 l_start_date := p_start_date;
22013 END IF;
22014
22015 IF (p_end_date IS NULL)
22016 THEN
22017 l_end_date := cz_utils.epoch_end;
22018 ELSE
22019 l_end_date := p_end_date;
22020 END IF;
22021
22022 ----check model upto date
22023 cz_pb_mgr.model_upto_date(p_model_id, p_ui_def_id, v_upto_date_status);
22024
22025 IF (v_upto_date_status <> '0')
22026 THEN
22027 RAISE model_not_upto_date;
22028 END IF;
22029
22030 ----check for publication overlap
22031 chk_pub_overlap_internal(l_product_key
22032 ,l_publication_mode
22033 ,p_appl_id_tbl
22034 ,p_lang_tbl
22035 ,p_usg_id_tbl
22036 ,p_server_id
22037 ,l_start_date
22038 ,l_end_date
22039 ,PUB_SOURCE_FLAG
22040 ,1
22041 ,v_publicationidstring
22042 );
22043
22044 IF (v_publicationidstring <> '-1')
22045 THEN
22046 RAISE pub_overlap;
22047 END IF;
22048
22049 SELECT cz_model_publications_s.NEXTVAL
22050 INTO v_new_publication_id
22051 FROM DUAL;
22052
22053 INSERT INTO cz_model_publications
22054 (publication_id, model_id, server_id, organization_id, top_item_id, product_key, publication_mode
22055 ,ui_def_id, ui_style, applicable_from, applicable_until, export_status, deleted_flag, model_last_struct_update
22056 ,model_last_logic_update, model_last_updated, model_persistent_id, source_target_flag, remote_publication_id, object_id
22057 ,object_type, disabled_flag
22058 )
22059 VALUES (v_new_publication_id, p_model_id, p_server_id, l_organization_id, l_inventory_item_id, l_product_key, l_publication_mode
22060 ,p_ui_def_id, l_ui_style, l_start_date, l_end_date, 'PEN', '0', l_last_struct_update
22061 ,l_last_logic_update, l_last_updated, l_persistent_project_id, PUB_SOURCE_FLAG, NULL, p_model_id
22062 ,'PRJ', '0'
22063 );
22064
22065 IF (p_appl_id_tbl.COUNT > 0)
22066 THEN
22067 FOR i IN p_appl_id_tbl.FIRST .. p_appl_id_tbl.LAST
22068 LOOP
22069 l_short_name := ' ';
22070
22071 SELECT application_short_name
22072 INTO l_short_name
22073 FROM fnd_application
22074 WHERE application_id = p_appl_id_tbl(i);
22075
22076 INSERT INTO cz_pb_client_apps
22077 (publication_id, fnd_application_id, application_short_name
22078 )
22079 VALUES (v_new_publication_id, p_appl_id_tbl(i), l_short_name
22080 );
22081 ---- short name must be retrieved from fnd_applications_tl
22082 END LOOP;
22083 END IF;
22084
22085 IF (p_usg_id_tbl.COUNT > 0)
22086 THEN
22087 FOR i IN p_usg_id_tbl.FIRST .. p_usg_id_tbl.LAST
22088 LOOP
22092 VALUES (v_new_publication_id, p_usg_id_tbl(i)
22089 INSERT INTO cz_publication_usages
22090 (publication_id, usage_id
22091 )
22093 );
22094 END LOOP;
22095 ELSE
22096 INSERT INTO cz_publication_usages
22097 (publication_id, usage_id
22098 )
22099 VALUES (v_new_publication_id, l_usg_id
22100 );
22101 END IF;
22102
22103 IF (p_lang_tbl.COUNT > 0)
22104 THEN
22105 FOR i IN p_lang_tbl.FIRST .. p_lang_tbl.LAST
22106 LOOP
22107 INSERT INTO cz_pb_languages
22108 (publication_id, LANGUAGE
22109 )
22110 VALUES (v_new_publication_id, p_lang_tbl(i)
22111 );
22112 END LOOP;
22113 ELSE
22114 INSERT INTO cz_pb_languages
22115 (publication_id, LANGUAGE
22116 )
22117 VALUES (v_new_publication_id, l_lang_code
22118 );
22119 END IF;
22120
22121 x_publication_id := v_new_publication_id;
22122 EXCEPTION
22123 WHEN product_key_is_null
22124 THEN
22125 x_return_status := FND_API.G_RET_STS_ERROR;
22126 fnd_message.set_name('CZ', 'CZ_PRODUCT_KEY_IS_NULL');
22127 fnd_msg_pub.ADD;
22128 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22129 WHEN no_model_id
22130 THEN
22131 x_return_status := FND_API.G_RET_STS_ERROR;
22132 fnd_message.set_name('CZ', 'cz_pb_mgr_MODEL_ID_NULL');
22133 fnd_msg_pub.ADD;
22134 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22135 WHEN no_model_exists
22136 THEN
22137 x_return_status := FND_API.G_RET_STS_ERROR;
22138 fnd_message.set_name('CZ', 'cz_pb_mgr_NO_MODEL_EXISTS');
22139 fnd_message.set_token('MODELID', p_model_id);
22140 fnd_msg_pub.ADD;
22141 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22142 WHEN no_ui_exists
22143 THEN
22144 x_return_status := FND_API.G_RET_STS_ERROR;
22145 fnd_message.set_name('CZ', 'cz_pb_mgr_NO_UI_EXISTS');
22146 fnd_message.set_token('MODELID', p_model_id);
22147 fnd_msg_pub.ADD;
22148 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22149 WHEN invalid_pb_mode
22150 THEN
22151 x_return_status := FND_API.G_RET_STS_ERROR;
22152 fnd_message.set_name('CZ', 'cz_pb_mgr_IVALID_PB_MODE');
22153 fnd_message.set_token('PBMODE', l_publication_mode);
22154 fnd_msg_pub.ADD;
22155 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22156 WHEN no_appl_id
22157 THEN
22158 x_return_status := FND_API.G_RET_STS_ERROR;
22159 fnd_message.set_name('CZ', 'cz_pb_mgr_NO_APPL_ID');
22160 fnd_msg_pub.ADD;
22161 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22162 WHEN pub_overlap
22163 THEN
22164 x_return_status := FND_API.G_RET_STS_ERROR;
22165 fnd_message.set_name('CZ', 'PUB_OVERLAP');
22166 fnd_message.set_token('PUB_OVERLAP', v_publicationidstring);
22167 fnd_msg_pub.ADD;
22168 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22169 WHEN model_not_upto_date
22170 THEN
22171 x_return_status := FND_API.G_RET_STS_ERROR;
22172 fnd_message.set_name('CZ', 'CZ_PB_MODEL_NOT_UPTO_DATE');
22173 fnd_message.set_token('UPTODATESTR', v_upto_date_status);
22174 fnd_msg_pub.ADD;
22175 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22176 WHEN OTHERS
22177 THEN
22178 x_return_status := FND_API.G_RET_STS_ERROR;
22179 fnd_message.set_name('CZ', 'CZ_PB_CREATE_PB_REQUEST_ERR');
22180 fnd_message.set_token('ERROR', SQLERRM);
22181 fnd_msg_pub.ADD;
22182 fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
22183 END create_publication_request;
22184
22185 ------------------------------------------------------------------------------------------------
22186 --Need to go through get_models_tobe_exported because it makes the decisions on shallow
22187 --migration.
22188 PROCEDURE mm_get_models_tobe_exported(rootmodelid_tbl IN cz_pb_mgr.t_ref)
22189 AS
22190 BEGIN
22191 IF (rootmodelid_tbl.COUNT > 0) THEN
22192 FOR i IN rootmodelid_tbl.FIRST .. rootmodelid_tbl.LAST
22193 LOOP
22194 get_models_tobe_exported(rootmodelid_tbl(i));
22195 END LOOP;
22196 END IF;
22197 END;
22198
22199 ------------------------------------------------------------------------------------------------
22200 FUNCTION mm_chkifmodelselectedforexport(input_model NUMBER)
22201 RETURN NUMBER
22202 AS
22203 return_value NUMBER := 0;
22204 BEGIN
22205 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0) THEN
22206 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
22207 LOOP
22208 IF (cz_pb_mgr.v_models_to_be_exported(i) = input_model)
22209 THEN
22210 return_value := 1;
22211 EXIT;
22212 END IF;
22213 END LOOP;
22214 END IF;
22215
22219 ------------------------------------------------------------------------------------------------
22216 RETURN return_value;
22217 END mm_chkifmodelselectedforexport;
22218
22220 --The current design for model migration will run
22221 --the publication process for every model that has been selected
22222 --to be migrated. The process of collecting the models is in
22223 --CZ_MODEL_MIGRATION_PVT. Once the models are collected there, for every
22224 --CZ_MODEL_PUBLICATIONS record, publish model is called. Given that,
22225 --this procedure gets the model for the current migration cz_model_publication
22226 --record.
22227
22228 FUNCTION get_rootmodel_and_mig_tgt_fldr(p_publication_id NUMBER)
22229 RETURN t_ref
22230 AS
22231 mm_root_model t_ref;
22232 BEGIN
22233
22234 --we load the global variable
22235 --holding the value of migration target folder
22236 SELECT migration_group_id, migration_tgt_folder
22237 INTO cz_pb_mgr.g_migration_group_id, cz_pb_mgr.g_migration_tgt_folder_id
22238 FROM cz_model_publications
22239 WHERE publication_id = p_publication_id;
22240
22241 --get the model corresponding to this publication
22242 SELECT object_id
22243 BULK COLLECT INTO mm_root_model
22244 FROM cz_model_publications
22245 WHERE publication_id = p_publication_id;
22246
22247 RETURN mm_root_model;
22248 END get_rootmodel_and_mig_tgt_fldr;
22249
22250 ------------------------------------------------------------------------------------------------
22251 PROCEDURE mm_loadoldpsnodesforitems
22252 AS
22253 v_project_count PLS_INTEGER;
22254 rec_count PLS_INTEGER;
22255 l_ps_uits_add_tbl date_tbl_type; -- cz_ps_nodes.UI_TIMESTAMP_ADD
22256 l_reverse_connector_tbl t_ref;
22257 BEGIN
22258 clear_tables('cz_ps_nodes', 'tbl', cz_pb_mgr.v_status_code);
22259 cz_pb_mgr.sequence_const := 0;
22260
22261 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
22262 THEN
22263 FOR i IN cz_pb_mgr.v_models_to_be_exported.FIRST .. cz_pb_mgr.v_models_to_be_exported.LAST
22264 LOOP
22265 BEGIN
22266 clear_tables('cz_ps_nodes', 'ref', cz_pb_mgr.v_status_code);
22267 l_ps_uits_add_tbl.DELETE;
22268 l_reverse_connector_tbl.DELETE;
22269
22270 SELECT cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_ps_nodes_seq
22271 , 'cz_ps_nodes_s.NEXTVAL' || cz_pb_mgr.v_db_link
22272 ,cz_pb_mgr.v_oraclesequenceincr
22273 )
22274 ,ps_node_id, parent_id, reference_id, effectivity_set_id
22275 ,intl_text_id, violation_text_id, displayname_capt_rule_id, component_id
22276 ,effective_usage_mask, item_id, ps_node_type
22277 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_origsysref(orig_sys_ref), 'N', orig_sys_ref)
22278 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqpath(component_sequence_path), 'N', component_sequence_path)
22279 ,DECODE(cz_pb_mgr.bomsynch_flag, 'Y', cz_bom_synch.psnode_compseqid(component_sequence_id), 'N', component_sequence_id)
22280 ,NVL(ui_timestamp_add, creation_date), reverse_connector_id
22281 BULK COLLECT INTO cz_pb_mgr.v_cz_ps_nodes_new_ref
22282 ,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
22283 ,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
22284 ,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
22285 ,cz_pb_mgr.v_ps_orig_sys_ref
22286 ,cz_pb_mgr.v_ps_comp_seq_path_ref
22287 ,cz_pb_mgr.v_ps_comp_seq_id_ref
22288 ,l_ps_uits_add_tbl, l_reverse_connector_tbl
22289 FROM cz_ps_nodes
22290 WHERE cz_ps_nodes.devl_project_id = cz_pb_mgr.v_models_to_be_exported(i) AND deleted_flag = record_not_deleted;
22291 EXCEPTION
22292 WHEN OTHERS
22293 THEN
22294 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_BULK_COLLECT_ERR', 'TABLENAME', 'cz_ps_nodes', 'SQLERRM', SQLERRM);
22295 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.MODEL', SQLCODE);
22296 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
22297 RAISE;
22298 END;
22299
22300 v_project_count := cz_pb_mgr.v_devl_project_tbl.COUNT;
22301 rec_count := cz_pb_mgr.v_cz_ps_nodes_new_tbl.COUNT;
22302
22303 IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0)
22304 THEN
22305 FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
22306 LOOP
22307 rec_count := rec_count + 1;
22308 cz_pb_mgr.v_cz_ps_nodes_new_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
22309 cz_pb_mgr.v_cz_ps_nodes_old_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_old_ref(k);
22310 cz_pb_mgr.v_cz_effective_usage_mask_tbl(rec_count) := cz_pb_mgr.v_cz_effective_usage_mask_ref(k);
22311 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);
22312 cz_pb_mgr.v_ps_refid_old_tbl(rec_count) := cz_pb_mgr.v_ps_ref_id_ref(k);
22313
22317 END IF;
22314 IF (cz_pb_mgr.v_cz_ps_nodes_old_ref(k) = cz_pb_mgr.v_models_to_be_exported(i))
22315 THEN
22316 cz_pb_mgr.v_new_devl_id := cz_pb_mgr.v_cz_ps_nodes_new_ref(k);
22318
22319 ------------resolve parent ids
22320 IF (cz_pb_mgr.v_ps_parent_id_ref(k) IS NOT NULL)
22321 THEN
22322 IF (cz_pb_mgr.v_cz_ps_nodes_old_ref.COUNT > 0) THEN
22323 FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_ref.LAST
22324 LOOP
22325 IF (cz_pb_mgr.v_ps_parent_id_ref(k) = cz_pb_mgr.v_cz_ps_nodes_old_ref(i))
22326 THEN
22327 cz_pb_mgr.v_ps_parent_id_ref(k) := cz_pb_mgr.v_cz_ps_nodes_new_ref(i);
22328 EXIT;
22329 END IF;
22330 END LOOP;
22331 END IF;
22332 END IF;
22333
22334 cz_pb_mgr.v_ps_parent_id_tbl(rec_count) := cz_pb_mgr.v_ps_parent_id_ref(k);
22335 cz_pb_mgr.v_ps_eff_set_id_tbl(rec_count) := cz_pb_mgr.v_ps_eff_set_id_ref(k);
22336 cz_pb_mgr.v_ps_intl_old_tbl(rec_count) := cz_pb_mgr.v_ps_intl_old_ref(k);
22337 cz_pb_mgr.v_ps_viol_old_tbl(rec_count) := cz_pb_mgr.v_ps_viol_old_ref(k);
22338 cz_pb_mgr.v_ps_capt_rule_tbl(rec_count) := cz_pb_mgr.v_ps_capt_rule_ref(k);
22339 cz_pb_mgr.v_cz_ps_nodes_comp_tbl(rec_count) := cz_pb_mgr.v_cz_ps_nodes_comp_ref(k);
22340 cz_pb_mgr.v_ps_orig_sys_tbl(rec_count) := cz_pb_mgr.v_ps_orig_sys_ref(k);
22341 cz_pb_mgr.v_ps_comp_seq_path_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_path_ref(k);
22342 cz_pb_mgr.v_ps_comp_seq_id_tbl(rec_count) := cz_pb_mgr.v_ps_comp_seq_id_ref(k);
22343 cz_pb_mgr.v_ps_item_id_tbl(rec_count) := cz_pb_mgr.v_ps_item_id_ref(k);
22344 cz_pb_mgr.v_ps_type_old_tbl(rec_count) := cz_pb_mgr.v_ps_type_old_ref(k);
22345 cz_pb_mgr.g_ps_uits_add_tbl(rec_count) := l_ps_uits_add_tbl(k);
22346 cz_pb_mgr.g_ps_reverse_connector_tbl(rec_count) := l_reverse_connector_tbl(k);
22347 END LOOP;
22348 END IF;
22349
22350 cz_pb_mgr.v_models_to_be_exported_new(i) := cz_pb_mgr.v_new_devl_id;
22351
22352 IF (cz_pb_mgr.v_cz_ps_nodes_new_ref.COUNT > 0) THEN
22353 FOR k IN cz_pb_mgr.v_cz_ps_nodes_new_ref.FIRST .. cz_pb_mgr.v_cz_ps_nodes_new_ref.LAST
22354 LOOP
22355 v_project_count := v_project_count + 1;
22356 cz_pb_mgr.v_devl_project_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
22357 -- cz_pb_mgr.v_intl_text_model_tbl(v_project_count) := cz_pb_mgr.v_new_devl_id;
22358 -- cz_pb_mgr.v_intl_text_ui_tbl(v_project_count) := -1;
22359 END LOOP;
22360 END IF;
22361
22362 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
22363 ,cz_pb_mgr.v_status_code);
22364
22365 ---------- update remote_model id in the source cz_pb_model_exports
22366 UPDATE cz_pb_model_exports t
22367 SET t.remote_model_id = cz_pb_mgr.v_models_to_be_exported_new(i)
22368 WHERE t.publication_id = cz_pb_mgr.v_publication_id
22369 AND t.server_id = cz_pb_mgr.v_server_id
22370 AND t.model_id = cz_pb_mgr.v_models_to_be_exported(i);
22371
22372 COMMIT;
22373 END LOOP; /* end loop of FOR I IN p_models_for_export */
22374 END IF; /* end if of p_models_for_export > 0 */
22375 END mm_loadoldpsnodesforitems;
22376
22377 ------------------------------------------------------------------------------------------------
22378 PROCEDURE get_all_properties
22379 AS
22380 v_property_count PLS_INTEGER := 0;
22381 rec_count PLS_INTEGER := 0;
22382 v_remote_prop_tbl cz_pb_mgr.t_ref;
22383 l_data_type_tbl cz_pb_mgr.t_ref;
22384 l_def_num_value_tbl cz_pb_mgr.t_ref;
22385 l_prop_num_value_tbl cz_pb_mgr.t_ref;
22386 l_old_psnode_id NUMBER;
22387
22388 l_devl_project_id_tbl cz_pb_mgr.t_ref;
22389 l_devl_project_id NUMBER;
22390
22391 -- model migration
22392 l_item_type_id_tbl cz_pb_mgr.t_ref;
22393 l_item_id_tbl cz_pb_mgr.t_ref;
22394 l_inherited_flag_tbl cz_pb_mgr.varchar_type_1_tbl;
22395 l_valuesource_tbl cz_pb_mgr.varchar_type_8_tbl;
22396 BEGIN
22397 IF (cz_pb_mgr.v_models_to_be_exported.COUNT > 0)
22398 THEN
22399 IF (cz_pb_mgr.g_log_timing = publication_timing)
22400 THEN
22401 log_timing_message('start bulk collect from cz_psnode_propval_v');
22402 END IF;
22403
22404 IF (cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0) THEN
22405 FOR i IN cz_pb_mgr.v_cz_ps_nodes_old_tbl.FIRST .. cz_pb_mgr.v_cz_ps_nodes_old_tbl.LAST
22406 LOOP
22407 clear_tables('cz_ps_prop_vals', 'tbl', cz_pb_mgr.v_status_code);
22408 l_data_type_tbl.DELETE;
22409 l_prop_num_value_tbl.DELETE;
22410 l_def_num_value_tbl.DELETE;
22411
22412 BEGIN
22413 l_old_psnode_id := cz_pb_mgr.v_cz_ps_nodes_old_tbl(i);
22414 l_devl_project_id := cz_pb_mgr.v_devl_project_tbl(i);
22415
22416 IF (cz_pb_mgr.v_session_parameter <> model_copy)
22417 THEN
22418
22419 -- Bug 5570651: The view cz_psnode_propval_v returns records for
22423 -- of type 263 referring to it. This causes publishing to create a record in
22420 -- REFERENCE nodes (ps_node_type:263), also. So, when publishing a model
22421 -- containing references, properties defined on the root of the referred model
22422 -- are retrieved more than once: once for the root node, and once for every node
22424 -- cz_ps_prop_vals for the node with type 263. This is unnecessary because, when
22425 -- getting properties for a reference node, CIO always goes to actual root of the
22426 -- referred model. In the case of this bug, the multiple records for the same property,
22427 -- each with a different devl_project_id were causing a problem when publishing
22428 -- translatable text properties. The intl_text_id to devl_project_id map (h_devl_prj_by_intl_text)
22429 -- was populated with wrong devl_project_ids just causing the intl_text to be
22430 -- written with a wrong model_id. We solve this problem by excluding records with
22431 -- ps_node_type = 263 in the query below
22432
22433 SELECT ps_node_id, property_id, data_type, property_num_value
22434 , property_value, item_type_id, item_id, inherited_flag, valuesource, l_devl_project_id
22435 , def_num_value
22436 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
22437 , cz_pb_mgr.v_prop_vals_data_tbl, l_item_type_id_tbl, l_item_id_tbl, l_inherited_flag_tbl, l_valuesource_tbl
22438 , l_devl_project_id_tbl, l_def_num_value_tbl
22439 FROM cz_psnode_propval_v t
22440 WHERE t.ps_node_id = l_old_psnode_id
22441 AND t.ps_node_type <> PS_NODE_REF_TYPE;
22442 -----ORDER BY ps_node_id;
22443 ELSE
22444 SELECT a.ps_node_id, a.property_id, b.data_type, a.data_num_value
22445 , a.data_value, l_devl_project_id
22446 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
22447 , cz_pb_mgr.v_prop_vals_data_tbl, l_devl_project_id_tbl
22448 FROM cz_ps_prop_vals a, cz_properties b
22449 WHERE a.property_id = b.property_id AND a.ps_node_id = l_old_psnode_id AND a.deleted_flag = '0';
22450 -----ORDER BY a.ps_node_id;
22451 END IF;
22452 EXCEPTION
22453 WHEN NO_DATA_FOUND
22454 THEN
22455 cz_pb_mgr.v_err_message := 'No nodes were found in prop vals view ';
22456 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
22457 WHEN OTHERS
22458 THEN
22459 cz_pb_mgr.v_err_message := 'Error in bulk collect from cz_ps_prop_vals: ' || SQLERRM;
22460 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.PROPVALS', SQLCODE);
22461 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
22462 RAISE;
22463 END;
22464
22465 IF (cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0)
22466 THEN
22467 v_property_count := cz_pb_mgr.v_prop_vals_node_ref.COUNT;
22468
22469 FOR j IN cz_pb_mgr.v_prop_vals_node_tbl.FIRST .. cz_pb_mgr.v_prop_vals_node_tbl.LAST
22470 LOOP
22471 v_property_count := v_property_count + 1;
22472
22473 cz_pb_mgr.v_prop_vals_node_ref(v_property_count) := cz_pb_mgr.v_prop_vals_node_tbl(j);
22474 cz_pb_mgr.v_prop_vals_prop_ref(v_property_count) := cz_pb_mgr.v_prop_vals_prop_tbl(j);
22475 cz_pb_mgr.v_prop_vals_data_typ_ref(v_property_count) := l_data_type_tbl(j);
22476 cz_pb_mgr.v_prop_vals_data_num_ref(v_property_count) := l_prop_num_value_tbl(j);
22477 cz_pb_mgr.v_prop_vals_data_ref(v_property_count) := cz_pb_mgr.v_prop_vals_data_tbl(j);
22478
22479 IF(l_data_type_tbl(j) = 8)THEN
22480
22481 --Bug #5441580. This is the case of translatable properties, data_num_value contains
22482 --intl_text_id of the property value. Hash the node's devl_project_id for later use
22483 --inserting into cz_localized_texts.
22484
22485 cz_pb_mgr.h_devl_prj_by_intl_text(l_prop_num_value_tbl(j)) := l_devl_project_id_tbl(j);
22486 END IF;
22487
22488 --model migration, maintain other columns
22489 IF (cz_pb_mgr.v_session_parameter <> model_copy)
22490 THEN
22491 cz_pb_mgr.v_prop_vals_inherited_flag_ref(v_property_count) := l_inherited_flag_tbl(j);
22492 cz_pb_mgr.v_prop_vals_item_type_id_ref(v_property_count) := l_item_type_id_tbl(j);
22493 cz_pb_mgr.v_prop_vals_item_id_ref(v_property_count) := l_item_id_tbl(j);
22494 cz_pb_mgr.v_prop_vals_valuesource_ref(v_property_count) := l_valuesource_tbl(j);
22495
22496 --There is no need to make this array public and define it in the spec as it is not used in
22497 --any dynamic sql blocks.
22498
22499 v_prop_vals_def_num_value_ref(v_property_count) := l_def_num_value_tbl(j);
22500
22501 END IF;
22502 END LOOP;
22503 END IF; /* end if of cz_pb_mgr.v_prop_vals_node_tbl.COUNT > 0 */
22507 END get_all_properties;
22504 END LOOP; /* end loop of FOR I IN cz_pb_mgr.v_cz_ps_nodes_old_tbl */
22505 END IF;
22506 END IF; /* cz_pb_mgr.v_cz_ps_nodes_old_tbl.COUNT > 0 */
22508 ------------------------------------------------------------------------------------------------
22509 PROCEDURE mm_sync_properties
22510 AS
22511 s_prop_id NUMBER;
22512 t_prop_id NUMBER;
22513 s_item_type_id NUMBER;
22514 t_item_type_id NUMBER;
22515 s_item_id NUMBER;
22516 t_item_id NUMBER;
22517 t_prop_val_num number;
22518 new_def_num_val number;
22519 l_exists_on_target_hash cz_pb_mgr.t_ref;
22520 BEGIN
22521 /*
22522 * For all the properties collected in v_prop_vals_prop_ref
22523 */
22524 IF(cz_pb_mgr.v_prop_vals_prop_ref.COUNT > 0) THEN
22525 FOR j IN cz_pb_mgr.v_prop_vals_prop_ref.FIRST .. cz_pb_mgr.v_prop_vals_prop_ref.LAST LOOP
22526
22527 /*
22528 Get the property_id
22529 handle properties check if the property with the same name, src_application_id exists
22530 Add either the existing prop or the new prop id to table mm_v_tbl_sync_prop(old);
22531 */
22532
22533 s_prop_id := cz_pb_mgr.v_prop_vals_prop_ref(j);
22534
22535 --The table l_exists_on_target_hash records the fact that we called mm_get_ifexists_on_target on this s_prop_id
22536 --and therefore don't have to do it again. If the property does not exist on the target, the value stored will
22537 --be null.
22538
22539 IF(NOT l_exists_on_target_hash.EXISTS(s_prop_id))THEN
22540
22541 mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
22542 l_exists_on_target_hash(s_prop_id) := t_prop_id;
22543
22544 ELSE
22545 t_prop_id := l_exists_on_target_hash(s_prop_id);
22546 END IF;
22547
22548 IF(t_prop_id IS NULL)THEN
22549
22550 t_prop_id := mm_get_newid('PROP');
22551 mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
22552
22553 --Because the property does not exist on the target, we will be creating a new property and so we need both
22554 --numeric value and numeric default value. These two values are special because of their use for translatable
22555 --properties. All other property attributes are handled in a standard way and don't need any special tables.
22556
22557 IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
22558
22559 --First for the numeric value of the translatable property.
22560
22561 t_prop_val_num := mm_get_newid('INTL_TEXT');
22562
22563 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
22564 --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
22565
22566 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
22567 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);
22568
22569 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));
22570
22571 --Same for the default value of the translatable property.
22572
22573 new_def_num_val := mm_get_newid('INTL_TEXT');
22574
22575 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
22576 mm_v_tbl_prop_vals_trans_old(mm_v_tbl_prop_vals_trans_old.count+1) := v_prop_vals_def_num_value_ref(j);
22577
22578 mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
22579 ELSE
22580
22581 t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j); /*Other properties dont need new intl_text_id*/
22582 new_def_num_val := v_prop_vals_def_num_value_ref(j);
22583 END IF;
22584
22585 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
22586
22587 --Making mm_v_tbl_sync_prop_vals_num a hash table. Now it cannot be used directly in the only place where
22588 --it is currently used - insert_item_schema. Will need to construct an array with the values from this
22589 --hash table.
22590
22591 mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
22592 mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
22593
22594 --The following two arrays are not used.
22595
22596 --mm_v_tbl_sync_prop_type(s_prop_id) := 'PRP';
22597 --mm_v_tbl_sync_prop_folder(s_prop_id) := cz_pb_mgr.g_migration_tgt_folder_id;
22598
22599 ELSE /*get the def num values of properties on target*/
22600
22601 --The property exists on the target, so t_prop_id is not null. We should not assign a value here to
22602 --mm_v_tbl_sync_prop(s_prop_id) because later this table will be used to resolve id(s) and build an
22603 --array of all properties that need to be migrated to the target - in a call to
22607 --mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
22604 --mm_resolve_ids_w_rp_entries in insert_item_schema procedure. So, here the mm_v_tbl_sync_prop is
22605 --supposed to have defined keys only for the properties that need to be created on the target.
22606
22608
22609 --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).
22610 --The ps_node_id value has been already resolved to the new id in upload_item_schema after get_all_properties.
22611 --So we need to query for this value, or, if there's no such value, than the ps_node_id will be created and
22612 --should inherit the property value.
22613
22614 --We do not need the default value, because here we prepare data to be inserted into cz_ps_prop_vals, and
22615 --this table does not store default values. What we need is a value in mm_v_ht_sync_all_prop_val_num(j) for
22616 --every pair of t_prop_id, v_prop_vals_node_ref(j).
22617
22618 IF(cz_pb_mgr.v_prop_vals_data_typ_ref(j) = 8)THEN /*Translatable properties*/
22619
22620 t_prop_val_num := mm_get_newid('INTL_TEXT');
22621
22622 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := t_prop_val_num;
22623 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);
22624
22625 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));
22626
22627 ELSE
22628
22629 t_prop_val_num := cz_pb_mgr.v_prop_vals_data_num_ref(j);
22630 END IF;
22631
22632 mm_v_ht_sync_all_prop_val_num(j) := t_prop_val_num;
22633 END IF;
22634
22635 s_item_id := v_prop_vals_item_id_ref(j);
22636
22637 --If s_item_id is not null, than the value is defined on the item, not on the ps node.
22638 --If the value exists on the source in cz_item_property_values, than the value is defined
22639 --on the item directly, not through item type.
22640
22641 IF((s_item_id IS NOT NULL) AND (mm_get_ifexists_on_source(s_prop_id, 'ITPROPVAL') = '1'))THEN
22642
22643 mm_v_ht_sync_it_propval(s_prop_id) := t_prop_id;
22644
22645 IF(NOT mm_v_ht_sync_items.EXISTS(s_item_id))THEN
22646
22647 mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
22648
22649 IF(t_item_id IS NULL)THEN
22650
22651 t_item_id := mm_get_newid('ITEM');
22652 mm_v_ht_sync_items(s_item_id) := t_item_id;
22653 ELSE
22654
22655 mm_v_ht_sync_exist_items(s_item_id) := t_item_id;
22656 END IF;
22657 ELSE
22658
22659 t_item_id := mm_v_ht_sync_items(s_item_id);
22660 END IF;
22661
22662 mm_v_ht_sync_it_propval_itm(s_item_id) := t_item_id;
22663 END IF;
22664
22665 --This block selects from all the properties only those that come from cz_ps_prop_vals, as
22666 --mm_v_ht_sync_ps_propval is used in mm_migrate_into_ps_prop_vals as one of the criteria
22667 --whether to insert the value into cz_ps_prop_vals.
22668
22669 IF(mm_get_ifexists_on_source(s_prop_id, 'PSPROPVAL') = '1')THEN
22670
22671 mm_v_ht_sync_ps_propval(s_prop_id) := t_prop_id;
22672 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
22673 mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
22674 END IF;
22675 END LOOP;
22676 END IF;
22677
22678 --Now we deal with properties associated with Item Types.
22679
22680 --This is the same algorithm as above, but the sources of property_id and property_num_value are different arrays and
22681 --a different query must be used (against cz_item_property_values) when the property and the item exist on the target.
22682 --For item_id, the second part of the above block must be useful.
22683
22684 IF(cz_pb_mgr.v_item_prop_type_tbl.COUNT > 0)THEN
22685
22686 --This array contains all property_id(s) of properties that are involved in the migration because of their association
22687 --with item types. If a property is defined directly on a node, it has already been processes and stored in the hash
22688 --table mm_v_tbl_sync_prop, so it won't be processed here.
22689
22690 FOR j IN cz_pb_mgr.v_item_prop_type_tbl.FIRST .. cz_pb_mgr.v_item_prop_type_tbl.LAST LOOP
22691
22692 s_prop_id := cz_pb_mgr.v_item_prop_id_tbl(j);
22693
22694 IF(NOT mm_v_tbl_sync_prop.EXISTS(s_prop_id))THEN
22695
22696 mm_get_ifexists_on_target(s_prop_id, t_prop_id, 'PROP');
22697
22698 IF(t_prop_id IS NULL)THEN
22699
22700 t_prop_id := mm_get_newid('PROP');
22701 mm_v_tbl_sync_prop(s_prop_id) := t_prop_id;
22702
22703 --Because the property does not exist on the target, we will be creating a new property and so we need the
22704 --default numeric value. Note that we should not populate array mm_v_ht_sync_all_prop_val_num in this block
22705 --because it is used for insert into cz_ps_prop_vals. We do need to populate the table
22706 --mm_v_tbl_sync_prop_vals_num with default numeric values of all properties that will be inserted on the
22707 --target, just like in the previous block.
22711 new_def_num_val := mm_get_newid('INTL_TEXT');
22708
22709 IF(cz_pb_mgr.v_item_prop_data_typ_tbl(j) = 8)THEN /*Tranlatable properties*/
22710
22712
22713 --mm_v_tbl_prop_vals_trans_new:contains all inl text(new def num vals) which need to be inserted into cz_localized_texts
22714 --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
22715
22716 mm_v_tbl_prop_vals_trans_new(mm_v_tbl_prop_vals_trans_new.count+1) := new_def_num_val;
22717 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);
22718
22719 --These properties are associated with item types, not ps nodes, therefore we can set 0 for model_id.
22720
22721 mm_intl_text_model_id_ref(mm_intl_text_model_id_ref.COUNT + 1) := 0;
22722 ELSE /*Other properties dont need new def num ids*/
22723
22724 new_def_num_val := cz_pb_mgr.v_item_prop_num_val_tbl(j);
22725 END IF;
22726
22727 --mm_v_tbl_sync_prop_vals_num: contains all new def num vals which need to be inserted into cz_properties
22728
22729 mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
22730 ELSE /*get the def num values of properties on target*/
22731
22732 --The property exists on the target, so t_prop_id is not null. Again, these are properties associated with item types,
22733 --so we need only the default numeric value. This query cannot fail with NO_DATA_FOUND.
22734
22735 EXECUTE IMMEDIATE 'SELECT def_num_value FROM cz_properties' || cz_pb_mgr.v_db_link ||
22736 ' WHERE property_id = :1 AND deleted_flag = 0'
22737 INTO new_def_num_val
22738 USING t_prop_id;
22739
22740 mm_v_tbl_sync_prop_vals_num(t_prop_id) := new_def_num_val;
22741 END IF;
22742 ELSE
22743
22744 t_prop_id := mm_v_tbl_sync_prop(s_prop_id);
22745 END IF;
22746
22747 s_item_type_id := v_item_prop_type_tbl(j);
22748
22749 IF(NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))THEN
22750
22751 mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
22752
22753 IF(t_item_type_id IS NULL)THEN
22754
22755 t_item_type_id := mm_get_newid('ITEM_TYPE');
22756 mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
22757 END IF;
22758 ELSE
22759 t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
22760 END IF;
22761
22762 mm_v_ht_sync_itmtype_for_prop(s_item_type_id) := t_item_type_id;
22763 mm_v_ht_sync_item_type_prop(s_prop_id) := t_prop_id;
22764 --mm_v_ht_sync_all_prop: indexed arrays for all the property ids(new/old) associated with the migration
22765 mm_v_ht_sync_all_prop(s_prop_id) := t_prop_id;
22766 END LOOP;
22767 END IF;
22768 END mm_sync_properties;
22769 ------------------------------------------------------------------------------------------------
22770 PROCEDURE mm_sync_itemschema
22771 AS
22772 s_prop_id NUMBER;
22773 t_prop_id NUMBER;
22774 s_item_type_id NUMBER;
22775 t_item_type_id NUMBER;
22776 s_item_id NUMBER;
22777 t_item_id NUMBER;
22778
22779 BEGIN
22780 IF (cz_pb_mgr.v_item_masters_tbl.COUNT > 0)
22781 THEN
22782 FOR i IN cz_pb_mgr.v_item_masters_tbl.FIRST .. cz_pb_mgr.v_item_masters_tbl.LAST
22783 LOOP
22784 s_item_id := cz_pb_mgr.v_item_masters_tbl(i);
22785
22786 IF (NOT mm_v_ht_sync_items.EXISTS(s_item_id))
22787 THEN
22788 mm_get_ifexists_on_target(s_item_id, t_item_id, 'ITEM');
22789 IF (t_item_id IS NULL)
22790 THEN
22791 t_item_id := mm_get_newid('ITEM');
22792 mm_v_ht_sync_items(s_item_id) := t_item_id;
22793 ELSE
22794 mm_v_ht_sync_exist_items(s_item_id) := t_item_id;
22795 END IF;
22796 ELSE
22797 t_item_id := mm_v_ht_sync_items(s_item_id);
22798 END IF;
22799
22800 s_item_type_id := v_item_types_tbl(i);
22801 IF (NOT mm_v_ht_sync_item_type.EXISTS(s_item_type_id))
22802 THEN
22803 mm_get_ifexists_on_target(s_item_type_id, t_item_type_id, 'ITEM_TYPE');
22804 IF (t_item_type_id IS NULL)
22805 THEN
22806 t_item_type_id := mm_get_newid('ITEM_TYPE');
22807 mm_v_ht_sync_item_type(s_item_type_id) := t_item_type_id;
22808 END IF;
22809 ELSE
22810 t_item_type_id := mm_v_ht_sync_item_type(s_item_type_id);
22811 END IF;
22812
22813 IF (NOT mm_v_ht_sync_exist_items.EXISTS(s_item_id))
22814 THEN
22815 mm_v_ht_sync_item_type_items(s_item_id) := t_item_type_id;
22816 END IF;
22817
22818 END LOOP;
22819 END IF;
22820 END mm_sync_itemschema;
22821
22822 FUNCTION mm_get_ifexists_on_source(source_id IN NUMBER, what_exists VARCHAR2)
22823 RETURN VARCHAR2
22824 AS
22825 record_exists VARCHAR2(1) := '0';
22826 BEGIN
22827 IF (what_exists = 'PSPROPVAL')
22828 THEN
22829 SELECT '1'
22830 INTO record_exists
22831 FROM DUAL
22835 ELSIF(what_exists = 'ITPROPVAL')
22832 WHERE EXISTS(SELECT property_id
22833 FROM cz_ps_prop_vals
22834 WHERE property_id = source_id);
22836 THEN
22837 SELECT '1'
22838 INTO record_exists
22839 FROM DUAL
22840 WHERE EXISTS(SELECT property_id
22841 FROM cz_item_property_values
22842 WHERE property_id = source_id);
22843 END IF;
22844
22845 RETURN record_exists;
22846 EXCEPTION
22847 WHEN NO_DATA_FOUND
22848 THEN
22849 RETURN record_exists;
22850 END mm_get_ifexists_on_source;
22851
22852 PROCEDURE mm_get_ifexists_on_target(source_id IN NUMBER, target_id IN OUT NOCOPY NUMBER, what_exists IN VARCHAR2)
22853 AS
22854 l_sql_str VARCHAR2(2000);
22855 l_sync_msg_object_type_tkn VARCHAR2(50);
22856 l_sync_msg_object_name_tkn VARCHAR2(50);
22857 cz_property_caption VARCHAR2(50) := 'Property';
22858 cz_item_caption VARCHAR2(50) := 'Item';
22859 cz_item_type_caption VARCHAR2(50) := 'Item Type';
22860 cz_archive_caption VARCHAR2(50) := 'Archive';
22861 cz_effset_caption VARCHAR2(50) := 'Effectivity Set';
22862 BEGIN
22863 IF (what_exists = 'PROP')
22864 THEN
22865 l_sql_str :=
22866 'SELECT t.property_id, t.NAME FROM cz_properties' || cz_pb_mgr.v_db_link || ' t' || ',' ||
22867 'cz_rp_entries' || cz_pb_mgr.v_db_link || ' t1' || ',' ||
22868 'cz_properties s' || ' ' ||
22869 'WHERE t1.object_id = t.property_id AND t1.object_type = ''PRP'' ' || ' ' ||
22870 'AND t1.DELETED_FLAG = ''0'' '|| ' ' ||
22871 'AND t.NAME = s.NAME AND t1.NAME = s.NAME' || ' ' ||
22872 'AND t.data_type = s.data_type' || ' ' ||
22873 'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
22874 'AND s.property_id = :1';
22875 l_sync_msg_object_type_tkn := cz_property_caption;
22876 ELSIF(what_exists = 'ITEM')
22877 THEN
22878 l_sql_str :=
22879 'SELECT t.item_id, t.ref_part_nbr FROM cz_item_masters' || cz_pb_mgr.v_db_link || ' t' || ',' ||
22880 'cz_item_masters s' || ' ' ||
22881 'WHERE t.ref_part_nbr = s.ref_part_nbr' || ' ' ||
22882 'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
22883 'AND NVL(t.orig_sys_ref, 0) = :1' || ' ' ||
22884 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22885 'AND s.item_id = :2';
22886 l_sync_msg_object_type_tkn := cz_item_caption;
22887 ELSIF(what_exists = 'ITEM_TYPE')
22888 THEN
22889 l_sql_str :=
22890 'SELECT t.item_type_id, t.NAME FROM cz_item_types' || cz_pb_mgr.v_db_link || ' t' || ',' ||
22891 'cz_item_types s' || ' ' ||
22892 'WHERE t.NAME = s.NAME' || ' ' ||
22893 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22894 'AND NVL(t.src_application_id,-1) = NVL(s.src_application_id,-1)' || ' ' ||
22895 'AND s.item_type_id = :1';
22896 l_sync_msg_object_type_tkn := cz_item_type_caption;
22897 ELSIF(what_exists = 'ARCHIVE')
22898 THEN
22899 l_sql_str :=
22900 'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || ' t' || ',' ||
22901 'cz_archives s' || ' ' ||
22902 'WHERE t.object_type = ''ARC'' AND t.NAME = s.NAME' || ' ' ||
22903 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22904 'AND s.archive_id = :1';
22905 l_sync_msg_object_type_tkn := cz_archive_caption;
22906 ELSIF(what_exists = 'EFF_SETS')
22907 THEN
22908 l_sql_str :=
22909 'SELECT t.object_id, t.NAME FROM cz_rp_entries' || cz_pb_mgr.v_db_link || 't' || ',' ||
22910 'cz_effectivity_sets s' || ' ' ||
22911 'WHERE t.object_type = ''EFF'' AND t.NAME = s.NAME' || ' ' ||
22912 'AND t.DELETED_FLAG = ''0'' '|| ' ' ||
22913 'AND s.effectivity_set_id = :1';
22914 l_sync_msg_object_type_tkn := cz_effset_caption;
22915 END IF;
22916
22917 IF(what_exists = 'ITEM')THEN
22918
22919 EXECUTE IMMEDIATE l_sql_str
22920 INTO target_id, l_sync_msg_object_name_tkn
22921 USING NVL(mm_v_ht_items_orig_ref(source_id), 0)
22922 , source_id;
22923
22924 ELSE
22925
22926 EXECUTE IMMEDIATE l_sql_str
22927 INTO target_id, l_sync_msg_object_name_tkn
22928 USING source_id;
22929 END IF;
22930
22931 IF (target_id IS NOT NULL)
22932 THEN
22933 cz_pb_mgr.v_err_message :=
22934 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);
22935 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_get_ifexists_on_target', -1);
22936 END IF;
22937 EXCEPTION
22938 WHEN NO_DATA_FOUND
22939 THEN
22940 target_id := NULL;
22941 WHEN TOO_MANY_ROWS
22942 THEN
22943 --this is an error condition where there are too many rows with the same
22944 --name, which is not likely to happen
22945 target_id := -1;
22946
22950 ------------------------------------------------------------------------------------------------
22947 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.mm_get_ifexists_on_target', SQLCODE);
22948 END mm_get_ifexists_on_target;
22949
22951 FUNCTION mm_get_newid(what_id IN VARCHAR2)
22952 RETURN NUMBER
22953 AS
22954 returnid NUMBER;
22955 l_sql_str VARCHAR2(2000);
22956 l_seq VARCHAR2(32);
22957
22958 BEGIN
22959 IF (what_id = 'PROP')
22960 THEN
22961 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_PROPERTIES_SEQ
22962 , 'CZ_PROPERTIES_S.nextval' || cz_pb_mgr.v_db_link
22963 ,cz_pb_mgr.v_oraclesequenceincr
22964 );
22965
22966 ELSIF(what_id = 'ITEM')
22967 THEN
22968 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_MASTERS_SEQ
22969 , 'CZ_ITEM_MASTERS_S.nextval' || cz_pb_mgr.v_db_link
22970 ,cz_pb_mgr.v_oraclesequenceincr
22971 );
22972 ELSIF(what_id = 'ITEM_TYPE')
22973 THEN
22974 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ITEM_TYPES_SEQ
22975 , 'CZ_ITEM_TYPES_S.nextval' || cz_pb_mgr.v_db_link
22976 ,cz_pb_mgr.v_oraclesequenceincr
22977 );
22978
22979 ELSIF(what_id = 'ARCHIVE')
22980 THEN
22981 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.CZ_ARCHIVES_SEQ
22982 , 'CZ_ARCHIVES_S.nextval' || cz_pb_mgr.v_db_link
22983 ,cz_pb_mgr.v_oraclesequenceincr
22984 );
22985 ELSIF(what_id = 'INTL_TEXT')
22986 THEN
22987 RETURN cz_pb_mgr.sequence_generate(cz_pb_mgr.cz_intl_texts_seq
22988 , 'cz_intl_texts_s.nextval' || cz_pb_mgr.v_db_link
22989 ,cz_pb_mgr.v_oraclesequenceincr
22990 );
22991
22992 END IF;
22993
22994 END mm_get_newid;
22995
22996 ------------------------------------------------------------------------------------------------
22997 -----procedure inserts data into cz_ps_prop_vals
22998 PROCEDURE mm_migrate_into_ps_prop_vals
22999 AS
23000 v_migrate_error NUMBER := 0;
23001 l_sql_str VARCHAR2(32000);
23002 BEGIN
23003 IF ((cz_pb_mgr.v_status_code <> PUBLICATION_ERROR) AND(cz_pb_mgr.v_prop_vals_node_ref.COUNT > 0))
23004 THEN
23005 l_sql_str :=
23006 'BEGIN'
23007 || ' '
23008 || 'cz_pb_mgr.v_expr_count := 0;'
23009 || ' '
23010 || 'FOR I IN cz_pb_mgr.v_prop_vals_node_ref.FIRST..cz_pb_mgr.v_prop_vals_node_ref.LAST'
23011 || ' '
23012 || 'LOOP'
23013 || ' '
23014 ||
23015 ---only if a ps_prop_val needs to be inserted
23016 'IF ( '
23017 || 'cz_pb_mgr.mm_v_ht_sync_ps_propval.EXISTS(cz_pb_mgr.v_prop_vals_prop_ref(i))'
23018 || ' '
23019 || 'AND ( '
23020 || ' '
23021 || 'cz_pb_mgr.v_prop_vals_inherited_flag_ref(i) <> ''1'' '
23022 || ' '
23023 || 'OR'
23024 || ' '
23025 || 'cz_pb_mgr.v_prop_vals_valuesource_ref(i) = '
23026 || ''''
23027 || cz_pb_mgr.prop_valuesource_psvalue
23028 || ''''
23029 || ' '
23030 || ')'
23031 || ' '
23032 || ') THEN'
23033 || ' '
23034 ||
23035 -- we always recreate ps nodes, so there is no issue there
23036 'cz_pb_mgr.v_propval_node_id := cz_pb_mgr.v_prop_vals_node_ref(i);'
23037 || ' '
23038 ||
23039 -- the key thing here is to ensure that the target property id gets in, they have already been synchronized earlier
23040 -- in mm_sync_properties
23041 '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));'
23042 || ' '
23043 || 'cz_pb_mgr.v_propval_data_value := cz_pb_mgr.v_prop_vals_data_ref(i);'
23044 || ' '
23045 || 'cz_pb_mgr.v_propval_data_num_value := cz_pb_mgr.mm_v_ht_sync_all_prop_val_num(i);'
23046 || ' '
23047 || 'INSERT INTO cz_ps_prop_vals'
23048 || cz_pb_mgr.v_db_link
23049 || '('
23050 || ' '
23051 || 'ps_node_id,PROPERTY_ID,DATA_VALUE,DELETED_FLAG,data_num_value)'
23052 || ' '
23053 || 'VALUES (cz_pb_mgr.v_propval_node_id,cz_pb_mgr.v_propval_prop_id,cz_pb_mgr.v_propval_data_value,'
23054 || ' '
23055 || ' ''0'',cz_pb_mgr.v_propval_data_num_value);'
23056 || ' '
23057 || 'IF ( cz_pb_mgr.v_expr_count > cz_pb_mgr.RECORD_COMMIT_SIZE) THEN'
23058 || ' '
23059 || 'COMMIT; cz_pb_mgr.v_expr_count := 0;'
23060 || ' '
23061 || 'END IF;'
23062 || ' '
23063 || 'cz_pb_mgr.v_expr_count := cz_pb_mgr.v_expr_count + 1;'
23064 || ' '
23065 || 'END IF;'
23069 || 'END;';
23066 || ' '
23067 || 'END LOOP;'
23068 || ' '
23070
23071 EXECUTE IMMEDIATE l_sql_str;
23072 END IF;
23073
23074 COMMIT;
23075 EXCEPTION
23076 WHEN OTHERS
23077 THEN
23078 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_TABLE_POPULATION_ERR', 'TABLENAME', 'cz_ps_prop_vals', 'SQLERRM', SQLERRM);
23079 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.LOAD_DATA:cz_ps_prop_vals', SQLCODE);
23080 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23081 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23082 RAISE;
23083 END mm_migrate_into_ps_prop_vals;
23084
23085 ------------------------------------------------------------------------------------------------
23086 FUNCTION mm_sync_eff_sets(old_eff_set_id NUMBER, new_eff_set_id NUMBER)
23087 RETURN NUMBER
23088 AS
23089 rec_count PLS_INTEGER := 0;
23090 s_effset_id NUMBER := NULL;
23091 t_effset_id NUMBER := NULL;
23092 BEGIN
23093
23094 /* don't go to through the link everytime. if you can get the
23095 effectivity set through memory, use it. Only go to the link
23096 if it is not collected already */
23097
23098 IF (NOT mm_v_ht_eff_set_tbl_s.EXISTS(old_eff_set_id)) THEN
23099 mm_get_ifexists_on_target(old_eff_set_id, t_effset_id, 'EFF_SETS');
23100 IF (t_effset_id IS NOT NULL) THEN
23101 mm_v_ht_eff_set_tbl_s(old_eff_set_id) := t_effset_id;
23102 END IF;
23103 ELSE
23104 t_effset_id := mm_v_ht_eff_set_tbl_s(old_eff_set_id);
23105 END IF;
23106
23107
23108 --we will maintain an array of old versus new effectivity set id
23109 --when we migrate the rule sequences, if a particular rule in a rule sequence has
23110 --an effectivity set id that already exists on the target, we will disable the
23111 --the rule sequence.
23112 IF (t_effset_id IS NOT NULL)
23113 THEN
23114 mm_v_ht_eff_set_tbl_t(t_effset_id) := t_effset_id;
23115 RETURN t_effset_id;
23116 END IF;
23117
23118 RETURN NULL;
23119 END mm_sync_eff_sets;
23120
23121 ------------------------------------------------------------------------------------------------
23122 PROCEDURE mm_sync_archives
23123 AS
23124 rec_count PLS_INTEGER := 0;
23125 s_archive_id NUMBER;
23126 t_archive_id NUMBER;
23127 t_new_archive_id NUMBER;
23128 BEGIN
23129 /*check if an Archive already exists with the same name,
23130 * if it does, add to the table mm_v_ht_archive_tbl(old)
23131 * else, create a new sequence number and add to mm_v_ht_archive_tbl(old)
23132 */
23133 cz_pb_mgr.g_archives_mig_idx_ref.DELETE;
23134 cz_pb_mgr.mm_v_ht_sync_archives.DELETE;
23135 cz_pb_mgr.g_archives_obj_type.DELETE;
23136 cz_pb_mgr.g_enclosing_fld_rp_entry.DELETE;
23137 cz_pb_mgr.g_archives_old_tbl.DELETE;
23138
23139 IF (cz_pb_mgr.g_archives_new_ref.COUNT > 0) THEN
23140 FOR i IN cz_pb_mgr.g_archives_new_ref.FIRST .. cz_pb_mgr.g_archives_new_ref.LAST
23141 LOOP
23142 s_archive_id := cz_pb_mgr.g_archives_old_ref(i);
23143 t_new_archive_id := cz_pb_mgr.g_archives_new_ref(i);
23144
23145 IF (NOT g_archives_mig_idx_ref.EXISTS(s_archive_id)) THEN
23146 mm_get_ifexists_on_target(s_archive_id, t_archive_id, 'ARCHIVE');
23147 IF (t_archive_id IS NULL) THEN
23148 rec_count := rec_count + 1;
23149 cz_pb_mgr.mm_v_ht_sync_archives(rec_count) := t_new_archive_id;
23150 cz_pb_mgr.g_archives_obj_type(rec_count) := 'ARC';
23151 cz_pb_mgr.g_enclosing_fld_rp_entry(rec_count) := cz_pb_mgr.g_migration_tgt_folder_id;
23152 cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_new_archive_id;
23153 cz_pb_mgr.g_archives_old_tbl(rec_count) := s_archive_id;
23154 ELSE
23155 cz_pb_mgr.g_archives_mig_idx_ref(s_archive_id) := t_archive_id;
23156 END IF;
23157 END IF;
23158 END LOOP;
23159 END IF;
23160 END mm_sync_archives;
23161
23162 ------------------------------------------------------------------------------------------------
23163
23164 ------------------------------------------------------------------------------------------------
23165 PROCEDURE mm_insert_archives_for_pb
23166 IS
23167 rec_count PLS_INTEGER := 0;
23168 plsql_table_list cz_pb_mgr.col_plsql_table_list;
23169 BEGIN
23170 plsql_table_list.DELETE;
23171 rec_count := 1;
23172 plsql_table_list(rec_count).col_name := 'archive_id';
23173 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_new_ref';
23174
23175 IF (cz_pb_mgr.g_log_timing = publication_timing)
23176 THEN
23177 log_timing_message('start insert_into_table cz_archives');
23178 END IF;
23179
23180 insert_into_table('cz_archives'
23181 ,'archive_id'
23182 ,cz_pb_mgr.v_db_link
23183 ,plsql_table_list
23184 ,'cz_pb_mgr.g_archives_old_ref'
23185 ,cz_pb_mgr.g_archives_old_ref
23186 );
23187 resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
23188 plsql_table_list.DELETE;
23189 rec_count := 1;
23190 plsql_table_list(rec_count).col_name := 'archive_id';
23194 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
23191 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
23192 rec_count := rec_count + 1;
23193 plsql_table_list(rec_count).col_name := 'devl_project_id';
23195 insert_into_table('cz_archive_refs'
23196 ,'archive_id'
23197 ,'devl_project_id'
23198 ,cz_pb_mgr.v_db_link
23199 ,plsql_table_list
23200 ,'cz_pb_mgr.g_archive_id_old_ref'
23201 ,'cz_pb_mgr.g_devl_proj_old_ref'
23202 ,cz_pb_mgr.g_archive_id_old_ref
23203 ,cz_pb_mgr.g_devl_proj_old_ref
23204 );
23205 END mm_insert_archives_for_pb;
23206
23207 ------------------------------------------------------------------------------------------------
23208 PROCEDURE mm_insert_archives
23209 IS
23210 rec_count PLS_INTEGER := 0;
23211 plsql_table_list cz_pb_mgr.col_plsql_table_list;
23212 mm_source_table_list cz_pb_mgr.col_plsql_table_list;
23213 mm_rec_count NUMBER := 0;
23214 BEGIN
23215 IF (cz_pb_mgr.mm_v_ht_sync_archives.COUNT > 0)
23216 THEN
23217 plsql_table_list.DELETE;
23218 rec_count := 1;
23219 plsql_table_list(rec_count).col_name := 'archive_id';
23220 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
23221
23222 IF (cz_pb_mgr.g_log_timing = publication_timing)
23223 THEN
23224 log_timing_message('start insert_into_table cz_archives');
23225 END IF;
23226
23227 insert_into_table('cz_archives'
23228 ,'archive_id'
23229 ,cz_pb_mgr.v_db_link
23230 ,plsql_table_list
23231 ,'cz_pb_mgr.g_archives_old_tbl'
23232 ,cz_pb_mgr.g_archives_old_tbl
23233 );
23234 ----------begin insert into cz_rp_entries----------------
23235 plsql_table_list.DELETE;
23236 rec_count := 1;
23237 plsql_table_list(rec_count).col_name := 'object_id';
23238 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.mm_v_ht_sync_archives';
23239 rec_count := rec_count + 1;
23240 plsql_table_list(rec_count).col_name := 'object_type';
23241 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archives_obj_type';
23242 rec_count := rec_count + 1;
23243 plsql_table_list(rec_count).col_name := 'enclosing_folder';
23244 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_enclosing_fld_rp_entry';
23245 insert_into_rp_entries('cz_rp_entries'
23246 ,'object_id'
23247 ,'object_type'
23248 ,cz_pb_mgr.v_db_link
23249 ,plsql_table_list
23250 ,'cz_pb_mgr.g_archives_old_tbl'
23251 ,'cz_pb_mgr.g_archives_obj_type'
23252 ,cz_pb_mgr.g_archives_old_tbl
23253 ,cz_pb_mgr.g_archives_obj_type
23254 );
23255 ----------end insert into cz_rp_entries----------------
23256 END IF;
23257
23258 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');
23259 -- Need to use the right array to resolve the devl project ids.
23260 resolve_ids(cz_pb_mgr.g_devl_proj_ref, cz_pb_mgr.v_cz_ps_nodes_idx_tbl, 'resolve proj of archives');
23261 plsql_table_list.DELETE;
23262 rec_count := 1;
23263 plsql_table_list(rec_count).col_name := 'archive_id';
23264 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_archive_id_ref';
23265 rec_count := rec_count + 1;
23266 plsql_table_list(rec_count).col_name := 'devl_project_id';
23267 plsql_table_list(rec_count).table_name := 'cz_pb_mgr.g_devl_proj_ref';
23268 insert_into_table('cz_archive_refs'
23269 ,'archive_id'
23270 ,'devl_project_id'
23271 ,cz_pb_mgr.v_db_link
23272 ,plsql_table_list
23273 ,'cz_pb_mgr.g_archive_id_old_ref'
23274 ,'cz_pb_mgr.g_devl_proj_old_ref'
23275 ,cz_pb_mgr.g_archive_id_old_ref
23276 ,cz_pb_mgr.g_devl_proj_old_ref
23277 );
23278 END mm_insert_archives;
23279
23280 ------------------------------------------------------------------------------------------------
23281 ------------------------------------------------------------------------------------------------
23282 --procedure to debug long strings
23283 --does nothing outside of break the long str into
23284 --smaller strings so it is visible in the debugger
23285 PROCEDURE mm_break_long_str(v_inp_str IN VARCHAR2)
23286 AS
23287 v_temp_str VARCHAR2(255);
23288 BEGIN
23289 v_temp_str := SUBSTR(v_inp_str, 1, 250);
23290 v_temp_str := SUBSTR(v_inp_str, 251, 250);
23291 v_temp_str := SUBSTR(v_inp_str, 501, 250);
23292 v_temp_str := SUBSTR(v_inp_str, 751, 250);
23293 v_temp_str := SUBSTR(v_inp_str, 1001, 250);
23294 v_temp_str := SUBSTR(v_inp_str, 1251, 250);
23295 v_temp_str := SUBSTR(v_inp_str, 1501, 250);
23296 v_temp_str := SUBSTR(v_inp_str, 1751, 250);
23297 v_temp_str := SUBSTR(v_inp_str, 2001, 250);
23301 v_temp_str := SUBSTR(v_inp_str, 3001, 250);
23298 v_temp_str := SUBSTR(v_inp_str, 2251, 250);
23299 v_temp_str := SUBSTR(v_inp_str, 2501, 250);
23300 v_temp_str := SUBSTR(v_inp_str, 2751, 250);
23302 v_temp_str := SUBSTR(v_inp_str, 3251, 250);
23303 v_temp_str := SUBSTR(v_inp_str, 3501, 250);
23304 v_temp_str := SUBSTR(v_inp_str, 3751, 250);
23305 v_temp_str := SUBSTR(v_inp_str, 4001, 250);
23306 END mm_break_long_str;
23307 ------------------------------------------------------------------------------------------------
23308 PROCEDURE mm_resync_ps_items
23309 AS
23310 BEGIN
23311 FOR i IN 1 .. v_ps_item_id_tbl.COUNT
23312 LOOP
23313 IF (mm_v_ht_sync_items.EXISTS(v_ps_item_id_tbl(i)))
23314 THEN
23315 mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_items(v_ps_item_id_tbl(i));
23316 ELSIF(mm_v_ht_sync_exist_items.EXISTS(v_ps_item_id_tbl(i)))
23317 THEN
23318 mm_v_ps_item_id_tbl(i) := mm_v_ht_sync_exist_items(v_ps_item_id_tbl(i));
23319 ELSE
23320 mm_v_ps_item_id_tbl(i) := v_ps_item_id_tbl(i);
23321 END IF;
23322 END LOOP;
23323 END;
23324 ------------------------------------------------------------------------------------------------
23325 PROCEDURE mm_resolve_ids(
23326 array_to_resolve IN cz_pb_mgr.t_ref
23327 ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
23328 ,resolving_id IN VARCHAR2
23329 ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
23330 ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
23331 )
23332 IS
23333 resolved_count NUMBER := 0;
23334 BEGIN
23335 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
23336 THEN
23337 IF (array_to_resolve.COUNT > 0)
23338 THEN
23339 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
23340 LOOP
23341 BEGIN
23342 IF (array_to_resolve(j) IS NOT NULL)
23343 THEN
23344 resolved_count := resolved_count + 1;
23345 resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
23346 source_array(resolved_count) := array_to_resolve(j);
23347 END IF;
23348 EXCEPTION
23349 WHEN NO_DATA_FOUND
23350 THEN
23351 resolved_count := resolved_count - 1;
23352 END;
23353 END LOOP;
23354 END IF;
23355 END IF;
23356 EXCEPTION
23357 WHEN OTHERS
23358 THEN
23359 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
23360 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23361 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23362 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23363 END mm_resolve_ids;
23364 ------------------------------------------------------------------------------------------------
23365 PROCEDURE mm_resolve_orig_refs(
23366 array_to_resolve IN cz_pb_mgr.t_ref
23367 ,array_of_new_keys IN cz_pb_mgr.orig_sys_ref_type
23368 ,resolving_id IN VARCHAR2
23369 ,resolved_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
23370 ,source_array IN OUT NOCOPY cz_pb_mgr.orig_sys_ref_type
23371 )
23372 IS
23373 resolved_count NUMBER := 0;
23374 BEGIN
23375 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
23376 THEN
23377 IF (array_to_resolve.COUNT > 0)
23378 THEN
23379 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
23380 LOOP
23381 BEGIN
23382 IF (array_to_resolve(j) IS NOT NULL)
23383 THEN
23384 resolved_count := resolved_count + 1;
23385 resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
23386 source_array(resolved_count) := array_to_resolve(j);
23387 END IF;
23388 EXCEPTION
23389 WHEN NO_DATA_FOUND
23390 THEN
23391 resolved_count := resolved_count - 1;
23392 END;
23393 END LOOP;
23394 END IF;
23395 END IF;
23396 EXCEPTION
23397 WHEN OTHERS
23398 THEN
23399 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
23400 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23401 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23402 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23403 END mm_resolve_orig_refs;
23404 ------------------------------------------------------------------------------------------------
23405 PROCEDURE mm_resolve_ids_w_rp_entries(
23406 array_to_resolve IN cz_pb_mgr.t_ref
23407 ,array_of_new_keys IN cz_pb_mgr.t_ref_idx_vc2
23408 ,object_type IN VARCHAR2
23409 ,target_folder IN NUMBER
23410 ,resolving_id IN VARCHAR2
23411 ,resolved_array IN OUT NOCOPY cz_pb_mgr.t_ref
23412 ,object_type_array IN OUT NOCOPY cz_pb_mgr.varchar_tbl_type_3
23413 ,tgt_folder_array IN OUT NOCOPY cz_pb_mgr.t_ref
23414 ,source_array IN OUT NOCOPY cz_pb_mgr.t_ref
23415 )
23416 IS
23417 resolved_count NUMBER := 0;
23418 resolved_array_idx cz_pb_mgr.t_ref_idx_vc2;
23419
23420 BEGIN
23421 resolved_array_idx.DELETE;
23425 THEN
23422 IF (cz_pb_mgr.v_status_code <> PUBLICATION_ERROR)
23423 THEN
23424 IF (array_to_resolve.COUNT > 0)
23426 FOR j IN array_to_resolve.FIRST .. array_to_resolve.LAST
23427 LOOP
23428 BEGIN
23429 IF (array_to_resolve(j) IS NOT NULL)
23430 THEN
23431 IF NOT (resolved_array_idx.EXISTS(array_to_resolve(j))) THEN
23432 resolved_count := resolved_count + 1;
23433 resolved_array(resolved_count) := array_of_new_keys(array_to_resolve(j));
23434 resolved_array_idx(array_to_resolve(j)) := array_of_new_keys(array_to_resolve(j));
23435 object_type_array(resolved_count) := object_type;
23436 tgt_folder_array(resolved_count) := target_folder;
23437 source_array(resolved_count) := array_to_resolve(j);
23438 END IF;
23439 END IF;
23440 EXCEPTION
23441 WHEN NO_DATA_FOUND
23442 THEN
23443 resolved_count := resolved_count - 1;
23444 END;
23445 END LOOP;
23446 END IF;
23447 END IF;
23448 EXCEPTION
23449 WHEN OTHERS
23450 THEN
23451 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_KEY_RES_ERR', 'ResolvingId', resolving_id, 'SQLERRM', SQLERRM);
23452 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23453 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23454 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23455 END mm_resolve_ids_w_rp_entries;
23456 ------------------------------------------------------------------------------------------------
23457 --if a rule_seq has a rule whose effectivity_set_id already
23458 --exists on the target, then set the rule effectivity to be
23459 --never effective for all the rules in that rule sequence
23460 PROCEDURE mm_resolve_rule_seq_effsetid
23461 AS
23462 b_update_rules BOOLEAN := FALSE;
23463 new_folder_id NUMBER;
23464 l_sql_string VARCHAR2(2000);
23465 remote_effs_cv ref_cursor;
23466 remote_rule_seq_name_cv ref_cursor;
23467 l_effecivity_set_id NUMBER;
23468 l_rule_folder_name cz_rule_folders.NAME%TYPE;
23469 l_rule_name cz_rules.NAME%TYPE;
23470 BEGIN
23471 --all the rule sequences have been accumulated here
23472 IF (mm_v_tbl_rule_seq.COUNT > 0) THEN
23473 FOR rule_seq IN mm_v_tbl_rule_seq.FIRST .. mm_v_tbl_rule_seq.LAST
23474 LOOP
23475 --get the new folder id from the hash table
23476 new_folder_id := v_cz_folders_id_idx_ref(mm_v_tbl_rule_seq(rule_seq));
23477 --get all the effectivity_set_ids for the rules in that rule sequence
23478 l_sql_string :=
23479 'SELECT effectivity_set_id, name'
23480 || ' '
23481 || 'FROM cz_rules'
23482 || cz_pb_mgr.v_db_link
23483 || ' '
23484 || 'WHERE rule_folder_id = :1'
23485 || ' '
23486 || ' AND effectivity_set_id is not null'
23487 || ' '
23488 || ' AND deleted_flag = ''0'' ';
23489 b_update_rules := FALSE;
23490
23491 OPEN remote_effs_cv FOR l_sql_string USING new_folder_id;
23492
23493 LOOP
23494 FETCH remote_effs_cv
23495 INTO l_effecivity_set_id, l_rule_name;
23496
23497 EXIT WHEN remote_effs_cv%NOTFOUND;
23498
23499 IF (mm_v_ht_eff_set_tbl_t.EXISTS(l_effecivity_set_id))
23500 THEN
23501 b_update_rules := TRUE;
23502 EXIT;
23503 END IF;
23504 END LOOP;
23505
23506 CLOSE remote_effs_cv;
23507
23508 --update the rules to be never effective
23509 IF b_update_rules
23510 THEN
23511 --log the event
23512 l_sql_string :=
23513 'SELECT name'
23514 || ' '
23515 || 'FROM cz_rule_folders'
23516 || cz_pb_mgr.v_db_link
23517 || ' '
23518 || 'WHERE rule_folder_id = :1'
23519 || ' '
23520 || 'AND deleted_flag = ''0'' ';
23521
23522 OPEN remote_rule_seq_name_cv FOR l_sql_string USING new_folder_id;
23523
23524 FETCH remote_rule_seq_name_cv
23525 INTO l_rule_folder_name;
23526
23527 CLOSE remote_rule_seq_name_cv;
23528
23529 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);
23530 log_pb_errors(cz_pb_mgr.v_err_message, 0, 'mm_resolve_rule_seq_effsetid', -1);
23531 l_sql_string :=
23532 'UPDATE cz_rules'
23533 || cz_pb_mgr.v_db_link
23534 || ' '
23535 || 'SET effective_from = :1'
23536 || ', '
23537 || ' effective_until = :2'
23538 || ','
23539 || ' effectivity_set_id = NULL'
23540 || ' '
23541 || 'WHERE rule_folder_id ='
23542 || new_folder_id
23543 || ' '
23544 || ' AND deleted_flag = ''0'' ';
23545
23546 EXECUTE IMMEDIATE l_sql_string
23547 USING cz_utils.epoch_end, cz_utils.epoch_begin;
23548 END IF;
23552 ------------------------------------------------------------------------------------------------
23549 END LOOP;
23550 END IF;
23551 END mm_resolve_rule_seq_effsetid;
23553 /*
23554 * Bug 5516478
23555 * On migrating a model to a remote server, if there are BOM models involved,
23556 * CZ_XFR_PROJECT_BILLS are also migrated. However, the column SOURCE_SERVER
23557 * in CZ_XFR_PROJECT_BILLS needs to be resolved to the import server on the
23558 * migration target. Currently it was being copied from the source to the
23559 * target. In order to do this we need to query CZ_SERVERS in the migration
23560 * target to get the SERVER_LOCAL_ID.
23561 */
23562 FUNCTION getRemoteImportServer(x_import_server_on_local IN OUT NOCOPY cz_servers.server_local_id%TYPE) RETURN NUMBER
23563 AS
23564
23565 l_sql_string VARCHAR2(2000);
23566 l_remote_server_id cz_servers.server_local_id%TYPE;
23567 l_hostname cz_servers.hostname%TYPE;
23568 l_db_listener_port cz_servers.db_listener_port%TYPE;
23569 l_instance_name cz_servers.instance_name%TYPE;
23570
23571 BEGIN
23572
23573 l_sql_string := 'SELECT server_local_id, hostname, db_listener_port, instance_name' ||
23574 ' FROM cz_servers' || cz_pb_mgr.v_db_link ||
23575 ' WHERE import_enabled = 1';
23576
23577 BEGIN
23578
23579 EXECUTE IMMEDIATE l_sql_string INTO l_remote_server_id, l_hostname, l_db_listener_port, l_instance_name;
23580
23581 EXCEPTION
23582 WHEN OTHERS THEN
23583 --'Unable to resolve the import source server ID for the migration target.'
23584 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_ERR_MIGTGT_IMPORT_SERVER ');
23585 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23586 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23587 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23588 RAISE;
23589 END;
23590
23591 --Now we need to identify a record in the local cz_servers that points to the target's import
23592 --source server. Per migration design, such record should exist.
23593 --We are not trying to detect the case when the target's import server is the migration source
23594 --itself - to do this we need to match the target's server record to the LOCAL record, but we
23595 --don't consistently populate instance parameters for the LOCAL record.
23596
23597 l_db_listener_port := UPPER(LTRIM(RTRIM(l_db_listener_port)));
23598 l_hostname := UPPER(LTRIM(RTRIM(l_hostname)));
23599 l_instance_name := UPPER(LTRIM(RTRIM(l_instance_name)));
23600
23601 x_import_server_on_local := NULL;
23602
23603 IF(l_remote_server_id = 0)THEN
23604
23605 --If the migration target import source is local, then it is the same as the target server.
23606
23607 x_import_server_on_local := cz_pb_mgr.v_server_id;
23608 ELSE
23609
23610 FOR c_server IN (SELECT server_local_id FROM cz_servers
23611 WHERE UPPER(LTRIM(RTRIM(db_listener_port))) = l_db_listener_port
23612 AND UPPER(LTRIM(RTRIM(hostname))) = l_hostname
23613 AND UPPER(LTRIM(RTRIM(instance_name))) = l_instance_name)LOOP
23614
23615 --The first matched instance will be used.
23616
23617 x_import_server_on_local := c_server.server_local_id;
23618 END LOOP;
23619 END IF;
23620
23621 IF(x_import_server_on_local IS NULL)THEN
23622
23623 --The import source of the migration target instance is not defined as a remote server on the migration source instance.
23624 --Please create a link to hostname '%HOSTNAME', listener port %LISTENER, instance name '%INSTANCE' by running the
23625 --Define Remote Server and Enable Remote Server concurrent programs on the migration source instance.
23626
23627 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);
23628 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.RESOLVEIDS', SQLCODE);
23629 cz_pb_mgr.v_status_code := PUBLICATION_ERROR;
23630 cz_pb_mgr.v_sql_err_msg := SUBSTR(SQLERRM, 1, 2000);
23631 RETURN -1;
23632 END IF;
23633
23634 RETURN l_remote_server_id;
23635 END;
23636 ------------------------------------------------------------------------------------------------
23637 /*
23638 * Bug 5523268
23639 * THis function will check if there are any child models that
23640 * have changed. At this point, we have considered only
23641 * UI Changes, but there may be a requirement to check
23642 * everything that happens in has_tobe_published. We
23643 * need to revisit this at a later date. We call
23644 * this for model migration in get_models_tobe_exported;
23645 */
23646 FUNCTION has_ui_inany_chld_mdl_changed(rootmodelid IN NUMBER) RETURN boolean IS
23647
23648 v_models_tbl cz_pb_mgr.t_ref;
23649 v_last_update_date cz_ui_defs.last_update_date%TYPE;
23650 v_last_xfr_activity cz_pb_model_exports.last_xfr_activity%TYPE;
23651 curr_model_tbl cz_pb_mgr.t_ref;
23652
23653 BEGIN
23654 get_source_models(rootmodelid, v_models_tbl);
23655
23656 /* do this only for child models
23657 * We iterate through the children and check if the UI has changed
23658 * for anything. For model migration, the root will
23659 * ALWAYS be migrated.
23660 */
23661 FOR i IN v_models_tbl.FIRST .. v_models_tbl.LAST
23662 LOOP
23666
23663 curr_model_tbl(0) := v_models_tbl(i);
23664
23665 IF(v_models_tbl(i) <> rootmodelid) THEN
23667 v_last_xfr_activity := get_mdl_last_xfr_activity(v_models_tbl(i), cz_pb_mgr.v_server_id);
23668 IF cz_pb_mgr.v_server_id<>0 THEN
23669 get_source_uis(rootmodelid, curr_model_tbl, cz_pb_mgr.v_cz_ui_defs_old_ref);
23670 END IF;
23671 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);
23672
23673 IF(cz_pb_mgr.v_cz_ui_defs_old_ref.COUNT > 0) THEN
23674 FOR j IN cz_pb_mgr.v_cz_ui_defs_old_ref.FIRST .. cz_pb_mgr.v_cz_ui_defs_old_ref.LAST
23675 LOOP
23676 get_max_ui_date(cz_pb_mgr.v_cz_ui_defs_old_ref(j), v_last_update_date);
23677
23678 IF(v_last_xfr_activity IS NULL) THEN
23679 RETURN TRUE;
23680 ELSIF((v_last_xfr_activity IS NOT NULL)
23681 AND(v_last_update_date > v_last_xfr_activity)) THEN
23682 RETURN TRUE;
23683 END IF;
23684
23685 END LOOP;
23686 END IF;
23687
23688 END IF;
23689
23690 END LOOP;
23691
23692 RETURN FALSE;
23693
23694 EXCEPTION
23695 WHEN others THEN
23696 cz_pb_mgr.v_err_message := cz_utils.get_text('CZ_PB_MODEL_TO_PUBLISH_ERR', 'SQLERRM', sqlerrm);
23697 cz_pb_mgr.error_msg_populate(cz_pb_mgr.v_err_message, 'cz_pb_mgr.HAS_TOBE_PUBLISHED', SQLCODE);
23698 cz_pb_mgr.v_err_message := LTRIM(RTRIM(SUBSTR(cz_pb_mgr.v_err_message, 1, 2000)));
23699 RAISE;
23700 END has_ui_inany_chld_mdl_changed;
23701 ------------------------------------------------------------------------------------------------
23702 /* Bug 5523268
23703 * this routine will check for the last transfer activity.
23704 * There is already a routine 'get_last_xfr_activity', but
23705 * it does check the transfer activity of the ROOT MODEL and
23706 * NOT the current child model. So we need to check if the
23707 * CHILD was transfered before during migration.
23708 */
23709 FUNCTION get_mdl_last_xfr_activity(
23710 p_model_id IN cz_model_publications.model_id%TYPE
23711 ,p_server_id IN cz_model_publications.server_id%TYPE
23712
23713 ) RETURN DATE
23714 AS
23715 x_last_xfr_activity DATE := NULL;
23716 BEGIN
23717
23718 SELECT last_xfr_activity
23719 INTO x_last_xfr_activity
23720 FROM cz_pb_model_exports
23721 WHERE cz_pb_model_exports.export_id =
23722 (SELECT MAX(export_id)
23723 FROM cz_pb_model_exports z
23724 WHERE z.model_id = p_model_id
23725 AND z.server_id = p_server_id
23726 AND z.status = 'OK'
23727 AND z.publication_id IN(
23728 SELECT publication_id
23729 FROM cz_model_publications
23730 WHERE export_status IN('OK', 'PUP')
23731 AND server_id = p_server_id
23732 AND publication_mode = cz_model_migration_pvt.mode_migration));
23733
23734 RETURN x_last_xfr_activity;
23735
23736
23737 EXCEPTION
23738 WHEN OTHERS
23739 THEN
23740
23741 RETURN x_last_xfr_activity;
23742 END get_mdl_last_xfr_activity;
23743 ------------------------------------------------------------------------------------------------
23744 BEGIN
23745 get_seq_incrementor(cz_pb_mgr.v_oraclesequenceincr);
23746 END cz_pb_mgr;