1 package body JTF_DPF_LOGICAL_PAGES_PKG as
2 /* $Header: jtfdpflb.pls 120.2 2005/10/25 05:17:14 psanyal ship $ */
3 -- select instances of this rule, identified by appid and name
4 cursor get_logical_id(
5 x_logical_page_name varchar2,
6 x_application_id number) is select logical_page_id
7 from jtf_dpf_logical_pages_b
8 where application_id = x_application_id and
9 logical_page_name=x_logical_page_name;
10
11 procedure INSERT_ROW (
12 X_ROWID IN OUT NOCOPY /* file.sql.39 change */ VARCHAR2,
13 X_LOGICAL_PAGE_ID in NUMBER,
14 X_LOGICAL_PAGE_NAME in VARCHAR2,
15 X_LOGICAL_PAGE_TYPE in VARCHAR2,
16 X_APPLICATION_ID in NUMBER,
17 X_ENABLED_FLAG in VARCHAR2,
18 X_PAGE_CONTROLLER_CLASS in VARCHAR2,
19 X_PAGE_PERMISSION_NAME in VARCHAR2,
20 X_OBJECT_VERSION_NUMBER in NUMBER,
21 X_LOGICAL_PAGE_DESCRIPTION in VARCHAR2,
22 X_CREATION_DATE in DATE,
23 X_CREATED_BY in NUMBER,
24 X_LAST_UPDATE_DATE in DATE,
25 X_LAST_UPDATED_BY in NUMBER,
26 X_LAST_UPDATE_LOGIN in NUMBER
27 ) is
28 cursor C is select ROWID from JTF_DPF_LOGICAL_PAGES_B
29 where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
30 ;
31 begin
32 insert into JTF_DPF_LOGICAL_PAGES_B (
33 LOGICAL_PAGE_ID,
34 LOGICAL_PAGE_NAME,
35 LOGICAL_PAGE_TYPE,
36 APPLICATION_ID,
37 ENABLED_FLAG,
38 PAGE_CONTROLLER_CLASS,
39 PAGE_PERMISSION_NAME,
40 OBJECT_VERSION_NUMBER,
41 CREATION_DATE,
42 CREATED_BY,
43 LAST_UPDATE_DATE,
44 LAST_UPDATED_BY,
45 LAST_UPDATE_LOGIN
46 ) values (
47 X_LOGICAL_PAGE_ID,
48 X_LOGICAL_PAGE_NAME,
49 X_LOGICAL_PAGE_TYPE,
50 X_APPLICATION_ID,
51 X_ENABLED_FLAG,
52 X_PAGE_CONTROLLER_CLASS,
53 X_PAGE_PERMISSION_NAME,
54 X_OBJECT_VERSION_NUMBER,
55 X_CREATION_DATE,
56 X_CREATED_BY,
57 X_LAST_UPDATE_DATE,
58 X_LAST_UPDATED_BY,
59 X_LAST_UPDATE_LOGIN
60 );
61
62 insert into JTF_DPF_LOGICAL_PAGES_TL (
63 LOGICAL_PAGE_ID,
64 LOGICAL_PAGE_DESCRIPTION,
65 CREATED_BY,
66 LAST_UPDATE_DATE,
67 LAST_UPDATED_BY,
68 LAST_UPDATE_LOGIN,
69 LANGUAGE,
70 SOURCE_LANG
71 ) select
72 X_LOGICAL_PAGE_ID,
73 X_LOGICAL_PAGE_DESCRIPTION,
74 X_CREATED_BY,
75 X_LAST_UPDATE_DATE,
76 X_LAST_UPDATED_BY,
77 X_LAST_UPDATE_LOGIN,
78 L.LANGUAGE_CODE,
79 userenv('LANG')
80 from FND_LANGUAGES L
81 where L.INSTALLED_FLAG in ('I', 'B')
82 and not exists
83 (select NULL
84 from JTF_DPF_LOGICAL_PAGES_TL T
85 where T.LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
86 and T.LANGUAGE = L.LANGUAGE_CODE);
87
88 open c;
89 fetch c into X_ROWID;
90 if (c%notfound) then
91 close c;
92 raise no_data_found;
93 end if;
94 close c;
95
96 end INSERT_ROW;
97
98 procedure LOCK_ROW (
99 X_LOGICAL_PAGE_ID in NUMBER,
100 X_LOGICAL_PAGE_NAME in VARCHAR2,
101 X_LOGICAL_PAGE_TYPE in VARCHAR2,
102 X_APPLICATION_ID in NUMBER,
103 X_ENABLED_FLAG in VARCHAR2,
104 X_PAGE_CONTROLLER_CLASS in VARCHAR2,
105 X_PAGE_PERMISSION_NAME in VARCHAR2,
106 X_OBJECT_VERSION_NUMBER in NUMBER,
107 X_LOGICAL_PAGE_DESCRIPTION in VARCHAR2
108 ) is
109 cursor c is select
110 LOGICAL_PAGE_NAME,
111 LOGICAL_PAGE_TYPE,
112 APPLICATION_ID,
113 ENABLED_FLAG,
114 PAGE_CONTROLLER_CLASS,
115 PAGE_PERMISSION_NAME,
116 OBJECT_VERSION_NUMBER
117 from JTF_DPF_LOGICAL_PAGES_B
118 where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
119 for update of LOGICAL_PAGE_ID nowait;
120 recinfo c%rowtype;
121
122 cursor c1 is select
123 LOGICAL_PAGE_DESCRIPTION,
124 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
125 from JTF_DPF_LOGICAL_PAGES_TL
126 where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
127 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
128 for update of LOGICAL_PAGE_ID nowait;
129 begin
130 open c;
131 fetch c into recinfo;
132 if (c%notfound) then
133 close c;
134 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
135 app_exception.raise_exception;
136 end if;
137 close c;
138 if ( (recinfo.LOGICAL_PAGE_NAME = X_LOGICAL_PAGE_NAME)
139 AND ((recinfo.LOGICAL_PAGE_TYPE = X_LOGICAL_PAGE_TYPE)
140 OR ((recinfo.LOGICAL_PAGE_TYPE is null) AND (X_LOGICAL_PAGE_TYPE is null)))
141 AND (recinfo.APPLICATION_ID = X_APPLICATION_ID)
142 AND (recinfo.ENABLED_FLAG = X_ENABLED_FLAG)
143 AND ((recinfo.PAGE_CONTROLLER_CLASS = X_PAGE_CONTROLLER_CLASS)
144 OR ((recinfo.PAGE_CONTROLLER_CLASS is null) AND (X_PAGE_CONTROLLER_CLASS is null)))
145 AND ((recinfo.PAGE_PERMISSION_NAME = X_PAGE_PERMISSION_NAME)
146 OR ((recinfo.PAGE_PERMISSION_NAME is null) AND (X_PAGE_PERMISSION_NAME is null)))
147 AND (recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
148 ) then
149 null;
150 else
151 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
152 app_exception.raise_exception;
153 end if;
154
155 for tlinfo in c1 loop
156 if (tlinfo.BASELANG = 'Y') then
157 if ( ((tlinfo.LOGICAL_PAGE_DESCRIPTION = X_LOGICAL_PAGE_DESCRIPTION)
158 OR ((tlinfo.LOGICAL_PAGE_DESCRIPTION is null) AND (X_LOGICAL_PAGE_DESCRIPTION is null)))
159 ) then
160 null;
161 else
162 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
163 app_exception.raise_exception;
164 end if;
165 end if;
166 end loop;
167 return;
168 end LOCK_ROW;
169
170 procedure UPDATE_ROW (
171 X_LOGICAL_PAGE_ID in NUMBER,
172 X_LOGICAL_PAGE_NAME in VARCHAR2,
173 X_LOGICAL_PAGE_TYPE in VARCHAR2,
174 X_APPLICATION_ID in NUMBER,
175 X_ENABLED_FLAG in VARCHAR2,
176 X_PAGE_CONTROLLER_CLASS in VARCHAR2,
177 X_PAGE_PERMISSION_NAME in VARCHAR2,
178 X_OBJECT_VERSION_NUMBER in NUMBER,
179 X_LOGICAL_PAGE_DESCRIPTION in VARCHAR2,
180 X_LAST_UPDATE_DATE in DATE,
181 X_LAST_UPDATED_BY in NUMBER,
182 X_LAST_UPDATE_LOGIN in NUMBER
183 ) is
184 begin
185 update JTF_DPF_LOGICAL_PAGES_B set
186 LOGICAL_PAGE_NAME = X_LOGICAL_PAGE_NAME,
187 LOGICAL_PAGE_TYPE = X_LOGICAL_PAGE_TYPE,
188 APPLICATION_ID = X_APPLICATION_ID,
189 ENABLED_FLAG = X_ENABLED_FLAG,
190 PAGE_CONTROLLER_CLASS = X_PAGE_CONTROLLER_CLASS,
191 PAGE_PERMISSION_NAME = X_PAGE_PERMISSION_NAME,
192 OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
193 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
194 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
195 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
196 where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID;
197
198 if (sql%notfound) then
199 raise no_data_found;
200 end if;
201
202 update JTF_DPF_LOGICAL_PAGES_TL set
203 LOGICAL_PAGE_DESCRIPTION = X_LOGICAL_PAGE_DESCRIPTION,
204 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
205 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
206 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
207 SOURCE_LANG = userenv('LANG')
208 where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID
209 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
210
211 if (sql%notfound) then
212 raise no_data_found;
213 end if;
214 end UPDATE_ROW;
215
216 procedure DELETE_ROW (
217 X_LOGICAL_PAGE_ID in NUMBER
218 ) is
219 begin
220 delete from JTF_DPF_LOGICAL_PAGES_TL
221 where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID;
222
223 if (sql%notfound) then
224 raise no_data_found;
225 end if;
226
227 delete from JTF_DPF_LOGICAL_PAGES_B
228 where LOGICAL_PAGE_ID = X_LOGICAL_PAGE_ID;
229
230 if (sql%notfound) then
231 raise no_data_found;
232 end if;
233 end DELETE_ROW;
234
235 procedure ADD_LANGUAGE
236 is
237 begin
238 delete from JTF_DPF_LOGICAL_PAGES_TL T
239 where not exists
240 (select NULL
241 from JTF_DPF_LOGICAL_PAGES_B B
242 where B.LOGICAL_PAGE_ID = T.LOGICAL_PAGE_ID
243 );
244
245 update JTF_DPF_LOGICAL_PAGES_TL T set (
246 LOGICAL_PAGE_DESCRIPTION
247 ) = (select
248 B.LOGICAL_PAGE_DESCRIPTION
249 from JTF_DPF_LOGICAL_PAGES_TL B
250 where B.LOGICAL_PAGE_ID = T.LOGICAL_PAGE_ID
251 and B.LANGUAGE = T.SOURCE_LANG)
252 where (
253 T.LOGICAL_PAGE_ID,
254 T.LANGUAGE
255 ) in (select
256 SUBT.LOGICAL_PAGE_ID,
257 SUBT.LANGUAGE
258 from JTF_DPF_LOGICAL_PAGES_TL SUBB, JTF_DPF_LOGICAL_PAGES_TL SUBT
259 where SUBB.LOGICAL_PAGE_ID = SUBT.LOGICAL_PAGE_ID
260 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
261 and (SUBB.LOGICAL_PAGE_DESCRIPTION <> SUBT.LOGICAL_PAGE_DESCRIPTION
262 or (SUBB.LOGICAL_PAGE_DESCRIPTION is null and SUBT.LOGICAL_PAGE_DESCRIPTION is not null)
263 or (SUBB.LOGICAL_PAGE_DESCRIPTION is not null and SUBT.LOGICAL_PAGE_DESCRIPTION is null)
264 ));
265
266 insert into JTF_DPF_LOGICAL_PAGES_TL (
267 LOGICAL_PAGE_ID,
268 LOGICAL_PAGE_DESCRIPTION,
269 CREATED_BY,
270 LAST_UPDATE_DATE,
271 LAST_UPDATED_BY,
272 LAST_UPDATE_LOGIN,
273 LANGUAGE,
274 SOURCE_LANG
275 ) select
276 B.LOGICAL_PAGE_ID,
277 B.LOGICAL_PAGE_DESCRIPTION,
278 B.CREATED_BY,
279 B.LAST_UPDATE_DATE,
280 B.LAST_UPDATED_BY,
281 B.LAST_UPDATE_LOGIN,
282 L.LANGUAGE_CODE,
283 B.SOURCE_LANG
284 from JTF_DPF_LOGICAL_PAGES_TL B, FND_LANGUAGES L
285 where L.INSTALLED_FLAG in ('I', 'B')
286 and B.LANGUAGE = userenv('LANG')
287 and not exists
288 (select NULL
289 from JTF_DPF_LOGICAL_PAGES_TL T
290 where T.LOGICAL_PAGE_ID = B.LOGICAL_PAGE_ID
291 and T.LANGUAGE = L.LANGUAGE_CODE);
292 end ADD_LANGUAGE;
293
294 procedure TRANSLATE_ROW (
295 X_LOGICAL_PAGE_NAME IN VARCHAR2,
296 X_APPLICATION_ID IN VARCHAR2,
297 X_LOGICAL_PAGE_DESCRIPTION IN VARCHAR2,
298 X_OWNER IN VARCHAR2
299 ) is
300 l_lid number;
301 l_user_id number;
302 begin
303 l_user_id := 0;
304 if x_owner = 'SEED' then l_user_id := 1; end if;
305
306 l_lid := find(x_logical_page_name, x_application_id);
307 update jtf_dpf_logical_pages_tl set
308 logical_page_description = x_logical_page_description,
309 last_updated_by = l_user_id,
310 last_update_date = sysdate,
311 last_update_login = 0,
312 source_lang = userenv('LANG')
313 where userenv('LANG') in (LANGUAGE, SOURCE_LANG) and
314 logical_page_id = l_lid;
315 end;
316
317 procedure ceiling_lgcl_phy(
318 X_LOGICAL_PAGE_NAME VARCHAR2,
319 X_APPLICATION_ID VARCHAR2,
320 X_NUM_NON_DEF_RULES VARCHAR2,
321 X_OWNER VARCHAR2,
322 X_FORCE_UPDATE_FLAG VARCHAR2) is
323 l_do_it boolean := false;
324 l_logical_page_id number;
325 l_user number;
326 l_owner_of_l2p number;
327 begin
328 l_user := 0;
329 if x_owner = 'SEED' then l_user := 1; end if;
330
331 -- figure which logical_id we're talking about
332 l_logical_page_id := find(x_logical_page_name, x_application_id);
333
334 -- if we're forced to, then do it!
335 if x_force_update_flag = 'TRUE' then l_do_it := true; end if;
336
337 -- if we haven't yet decided whether to do it, see whether we own the
338 -- default l2p row in lgcl_phy table
339 if not l_do_it then
340 begin
341 select last_updated_by into l_owner_of_l2p
342 from jtf_dpf_lgcl_phy_rules
343 where logical_page_id = l_logical_page_id and
344 default_page_flag = 'T';
345 if l_owner_of_l2p = l_user then l_do_it := true; end if;
346 exception when no_data_found then return;
347 end;
348 end if;
349
350 -- if we've decided to do it,...
351 if l_do_it then
352 -- delete the rows, if any...
353 delete from jtf_dpf_lgcl_phy_rules
354 where logical_page_id = l_logical_page_id and
355 default_page_flag = 'F' and
356 rule_eval_sequence > x_num_non_def_rules;
357 end if;
358 end;
359
360 procedure LOAD_ROW (
361 X_LOGICAL_PAGE_NAME in VARCHAR2,
362 X_APPLICATION_ID in VARCHAR2,
363 X_LOGICAL_PAGE_DESCRIPTION in VARCHAR2,
364 -- X_NUM_NON_DEF_RULES IN VARCHAR2,
365 X_LOGICAL_PAGE_TYPE IN VARCHAR2,
366 X_ENABLED_FLAG IN VARCHAR2,
367 X_PAGE_CONTROLLER_CLASS IN VARCHAR2,
368 X_PAGE_PERMISSION_NAME IN VARCHAR2,
369 X_OWNER in VARCHAR2
370 ) is
371
372 t_old_logical_id number;
373 t_new_logical_id number;
374 t_rowid rowid;
375 t_user number;
376 begin
377 t_user := 0;
378 if x_owner = 'SEED' then t_user := 1; end if;
379
380 -- see whether a row with this appid and logical_page_name already exists
381 open get_logical_id(x_logical_page_name, x_application_id);
382 fetch get_logical_id into t_old_logical_id;
383
384 -- if it's not already there
385 if get_logical_id%notfound then
386 close get_logical_id;
387
388 -- get a new pseudo-sequence number
389 -- arsingh: prevent use of same id by different threads.
390 select JTF_DPF_LOGICAL_PAGES_S.nextval into t_new_logical_id from dual;
391 -- select max(logical_page_id) into t_new_logical_id
392 -- from jtf_dpf_logical_pages_b
393 -- where logical_page_id < 10000;
394 -- if t_new_logical_id is null then
395 -- t_new_logical_id := 1;
396 -- else
397 -- t_new_logical_id := t_new_logical_id+1;
398 -- end if;
399
400 -- call _pkg.insert_row to handle _b and _tl tables
401 insert_row(
402 X_ROWID => t_rowid,
403 X_LOGICAL_PAGE_ID => t_new_logical_id,
404 X_LOGICAL_PAGE_NAME => x_logical_page_name,
405 X_LOGICAL_PAGE_TYPE => x_logical_page_type,
406 X_APPLICATION_ID => x_application_id,
407 X_ENABLED_FLAG => x_enabled_flag,
408 X_PAGE_CONTROLLER_CLASS => x_page_controller_class,
409 X_PAGE_PERMISSION_NAME => x_page_permission_name,
410 X_OBJECT_VERSION_NUMBER => 1,
411 X_LOGICAL_PAGE_DESCRIPTION => x_logical_page_description,
412 X_CREATION_DATE => sysdate,
413 X_CREATED_BY => t_user,
414 X_LAST_UPDATE_DATE => sysdate,
415 X_LAST_UPDATED_BY => t_user,
416 X_LAST_UPDATE_LOGIN => 0
417 );
418 else
419 close get_logical_id;
420
421 -- call _pkg.update_row to handle _b and _tl tables
422 update_row(
423 X_LOGICAL_PAGE_ID => t_old_logical_id,
424 X_LOGICAL_PAGE_NAME => x_logical_page_name,
425 X_LOGICAL_PAGE_TYPE => x_logical_page_type,
426 X_APPLICATION_ID => x_application_id,
427 X_ENABLED_FLAG => x_enabled_flag,
428 X_PAGE_CONTROLLER_CLASS => x_page_controller_class,
429 X_PAGE_PERMISSION_NAME => x_page_permission_name,
430 X_OBJECT_VERSION_NUMBER => 1,
431 X_LOGICAL_PAGE_DESCRIPTION => x_logical_page_description,
432 X_LAST_UPDATE_DATE => sysdate,
433 X_LAST_UPDATED_BY => t_user,
434 X_LAST_UPDATE_LOGIN => 0
435 );
436 end if;
437 end;
438
439 function find(
440 x_logical_page_name varchar2,
441 x_application_id in varchar2
442 ) return number is
443 retval number := null;
444 begin
445 open get_logical_id(x_logical_page_name, x_application_id);
446 fetch get_logical_id into retval;
447 close get_logical_id;
448 return retval;
449 end;
450
451 procedure ins_upd_or_ign_lgcl_phy_rules(
452 x_rule_eval_sequence varchar2,
453 x_default_page_flag varchar2,
454 x_logical_page_application_id varchar2,
455 x_logical_page_name varchar2,
456 x_physical_page_application_id varchar2,
457 x_physical_page_name varchar2,
458 x_rule_application_id varchar2,
459 x_rule_name varchar2,
460 x_owner varchar2,
461 x_force_update_flag varchar2) is
462 l_last_updated_by number;
463 l_logical_id number := null;
464 l_physical_id number := null;
465 l_rule_id number := null;
466 l_lpid number := null;
467 t_new_lpid number := null;
468 l_is_update varchar2(1);
469 l_user_id number;
470 l_owner_of_l2p number;
471 l_do_it boolean := false;
472 cursor another_default(p_logical_page_id number) is
473 select logical_physical_id
474 from jtf_dpf_lgcl_phy_rules
475 where logical_page_id=p_logical_page_id and
476 default_page_flag='T';
477 cursor another_non_default(p_logical_page_id number, p_seq number) is
478 select logical_physical_id
479 from jtf_dpf_lgcl_phy_rules
480 where logical_page_id=p_logical_page_id and
481 default_page_flag='F' and
482 rule_eval_sequence = p_seq;
483 begin
484 l_user_id := 0;
485 if x_owner = 'SEED' then l_user_id := 1; end if;
486
487 -- get the logical_id that corresponds to this
488 l_logical_id := find(x_logical_page_name, x_logical_page_application_id);
489 l_rule_id := jtf_dpf_rules_pkg.find(x_rule_name, x_rule_application_id);
490 l_physical_id := jtf_dpf_physical_pages_pkg.find_oldest_prefer_owned_by(
491 x_physical_page_name, x_physical_page_application_id, l_user_id);
492
493 -- if we're forced to, then do it!
494 if x_force_update_flag = 'TRUE' then l_do_it := true; end if;
495
496 -- if we haven't yet decided whether to do it, see whether we own the
497 -- default l2p row in lgcl_phy table
498 if not l_do_it then
499 begin
500 select last_updated_by into l_owner_of_l2p
501 from jtf_dpf_lgcl_phy_rules
502 where logical_page_id = l_logical_id and
503 default_page_flag = 'T';
504 if l_owner_of_l2p = l_user_id then l_do_it := true; end if;
505 exception when no_data_found then l_do_it := true;
506 end;
507 end if;
508
509 -- if we've decided not to do it, then just return
510 if not l_do_it then return; end if;
511
512 -- try to find a row which matches this one (to see whether we should
513 -- do an UPDATE rather than an INSERT). If there's such a row, then
514 -- l_lpid will be the LOGICAL_PHYSICAL_ID of that row, else it'll remain
515 -- null.
516 if 'T' = x_default_page_flag then
517 -- if there's already a default
518 open another_default(l_logical_id);
519 fetch another_default into l_lpid;
520 close another_default;
521 -- else handle non-default row
522 else
523 open another_non_default(l_logical_id, x_rule_eval_sequence);
524 fetch another_non_default into l_lpid;
525 close another_non_default;
526 end if;
527
528 -- if there's no such row, then do an insert.
529
530 if l_lpid is null then
531 -- get a new logical_physical_id (pseudo-sequence)
532 -- arsingh: prevent use of same id by different threads.
533 select JTF_DPF_LGCL_PHY_RULES_S.nextval into t_new_lpid from dual;
534 -- select max(logical_physical_id) into t_new_lpid
535 -- from jtf_dpf_lgcl_phy_rules where logical_physical_id < 10000;
536 -- if t_new_lpid is null then
537 -- t_new_lpid := 1;
538 -- else
539 -- t_new_lpid := t_new_lpid + 1;
540 -- end if;
541 -- insert a new row
542
543 insert into jtf_dpf_lgcl_phy_rules(
544 logical_physical_id,
545 logical_page_id,
546 rule_eval_sequence,
547 default_page_flag,
548 physical_page_id,
549 rule_id,
550 object_version_number,
551 created_by,
552 creation_date,
553 last_update_date,
554 last_updated_by,
555 last_update_login)
556 values (
557 t_new_lpid,
558 l_logical_id,
559 x_rule_eval_sequence,
560 x_default_page_flag,
561 l_physical_id,
562 l_rule_id,
563 1,
564 l_user_id,
565 sysdate,
566 sysdate,
567 l_user_id,
568 0);
569 else
570 -- if there is such as row, and we either own it, or FORCE_UPDATE_FLAG
571 -- is true, then update it. else do nothing
572 select last_updated_by into l_last_updated_by
573 from jtf_dpf_lgcl_phy_rules
574 where logical_physical_id = l_lpid;
575 if l_last_updated_by = l_user_id or
576 x_force_update_flag = 'TRUE' then
577 update jtf_dpf_lgcl_phy_rules set
578 physical_page_id = l_physical_id,
579 rule_id = l_rule_id,
580 object_version_number = object_version_number +1,
581 last_update_date = sysdate,
582 last_updated_by = l_user_id,
583 last_update_login = 0
584 where logical_physical_id = l_lpid;
585 end if;
586 end if;
587 end;
588
589 end JTF_DPF_LOGICAL_PAGES_PKG;